dag*_*rre 0 python session-variables session-cookies flask
我是flask和python的新手,并且正在从事一个项目,在这个项目中,我们有一个可以通过两个不同的域访问的网站。代码库是相同的,但是域的品牌不同。我需要加载特定于域的样式表,并且在几个模板块中,我需要使用一些条件来仅在某些域上显示一些内容。
我认为最好的方法是根据域创建会话变量(欢迎其他建议)。当访问者进入其中一个域时,它会被设置,然后我可以使用条件加载适当的样式表/代码块。
我在让它工作时遇到了麻烦。现在,在我的app.py文件中,我有一个“客户端”会话变量,该变量基于在每次请求前被调用的url参数设置:
@app.before_request
def set_client_session():
if 'client' in request.args:
session['client'] = request.args['client']
Run Code Online (Sandbox Code Playgroud)
如何使用域而不是URL参数进行设置,如何在模板中检查其值,以便有条件地加载样式表/代码块?
完整的app.py文件:
import os
import json
from flask import Flask, session, request, render_template
app = Flask(__name__)
# Generate a secret random key for the session
app.secret_key = os.urandom(24)
@app.before_request
def set_client_session():
if 'client' in request.args:
session['client'] = request.args['client']
@app.route('/')
def index():
return render_template('index.html')
@app.route('/edc')
def abc():
return render_template('pages/abc.html')
@app.route('/success')
def success():
return render_template('success.html')
@app.route('/contact')
def contact():
return render_template('pages/contact.html')
@app.route('/privacy')
def privacy():
return render_template('pages/privacy.html')
@app.route('/license')
def license():
return render_template('pages/license.html')
@app.route('/install')
def dcm_download():
return render_template('pages/install.html')
@app.route('/uninstall')
def uninstall():
return render_template('pages/uninstall.html')
if __name__ == '__main__':
app.run(debug=True)
Run Code Online (Sandbox Code Playgroud)
您可以使用访问域名/主机名,request.headers['Host']然后将其设置为会话。
@app.before_request
def set_domain_session():
session['domain'] = request.headers['Host']
Run Code Online (Sandbox Code Playgroud)
另外,request.url_root在需要时还会为您提供域和协议。(例如http://domain.com/)
然后,在jinja2模板中,您可以访问会话变量并检查域。
{% if session.domain == 'domain1.com' %}
<link rel="stylesheet" href="{{ url_for('static', filename='css/domain1.css') }}">
{% else %}
<link rel="stylesheet" href="{{ url_for('static', filename='css/domain2.css') }}">
{% endif %}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3321 次 |
| 最近记录: |