我正在 Flask 中创建一个 Facebook 应用程序。由于这是一个微框架,我从教程开始,并将所有内容放在 2 个文件中:app.py 和 conf.py(以及 /templates 之类的其他文件)。
在基本结构中(主要由 heroku 生成)是这样的:
/game
game.py
conf.py
应用程序.py
FB_APP_ID = os.environ.get('FACEBOOK_APP_ID')
FB_APP_SECRET = os.environ.get('FACEBOOK_SECRET')
requests = requests.session()
app_url = 'https://graph.facebook.com/{0}'.format(FB_APP_ID)
FB_APP_NAME = json.loads(requests.get(app_url).content).get('name')
FB_APP_LOGO = json.loads(requests.get(app_url).content).get('logo_url')
app = Flask(__name__)
app.config.from_object(__name__)
app.config.from_object('conf.Config')
@app.route('/channel.html', methods=['GET', 'POST'])
def get_channel():
return render_template('channel.html')
@app.route('/')
def index():
return 'index'+str(FB_APP_ID)
if __name__ == '__main__':
port = int(os.environ.get("PORT", 5000))
print requests.headers
if app.config.get('FB_APP_ID') and app.config.get('FB_APP_SECRET'):
app.run(host='0.0.0.0', port=port)
else:
print 'Cannot start application without Facebook App Id and Secret set'
配置文件
import os
class Config(object):
DEBUG = True
TESTING = False
LOG_LEVEL = os.environ.get('LOG_LEVEL', 'DEBUG')
FBAPI_APP_ID = os.environ.get('FACEBOOK_APP_ID')
FBAPI_APP_SECRET = os.environ.get('FACEBOOK_SECRET')
FBAPI_SCOPE = ['user_likes', 'user_photos', 'user_photo_video_tags']
我想让它成为完美的 MVC,所以我使用了这个链接,问题就开始了。
/game
conf.py
runserver.py
/game
/templates
/static
__init__.py
views.py
models.py
运行服务器.py
import os
from game import app
if __name__ == '__main__':
port = int(os.environ.get("PORT", 5000))
# print requests.headers
if app.config.get('FB_APP_ID') and app.config.get('FB_APP_SECRET'):
app.run(host='0.0.0.0', port=port)
else:
print 'Cannot start application without Facebook App Id and Secret set'
__init__.py
from flask import Flask
import os, requests, json
SCRIPTS='static/scripts/'
FB_APP_ID = os.environ.get('FACEBOOK_APP_ID')
FB_APP_SECRET = os.environ.get('FACEBOOK_SECRET')
requests = requests.session()
app_url = 'https://graph.facebook.com/{0}'.format(FB_APP_ID)
FB_APP_NAME = json.loads(requests.get(app_url).content).get('name')
FB_APP_LOGO = json.loads(requests.get(app_url).content).get('logo_url')
app = Flask(__name__)
app.config.from_object(__name__)
app.config.from_object('conf.Config')
import game.views
import game.models
conf.py 保持不变,索引视图在视图中。
问题:在第一个结构(简单)中,os.environ 得到了所有的 FB_APP_ID 和 FB_APP_SECRET,我可以随心所欲地处理数据。
现在(在 MVC 中)它只是不获取变量,而我所拥有的是“无”。我试图把 __init__ == __main__ 放在任何我能做的地方,但没有任何效果。
conf.py 将所有数据放在开头(如 DEBUG=TRUE 或 LOG LEVEL)。这只是我没有得到的fb数据。