在每个可变阶段工作的 Flask 可扩展 URL
Flask Expandable URLs That Work At Each Variable Stage
已尝试使用 Python 2.7s Flask 完成此操作几个小时:
site.com/diseases : gives a page where I can list all diseases
site.com/diseases/diseaseX : list of subtopics for diseaseX
site.com/diseases/diseaseX/subHeading : so a url can be shared that brings users to a specific subheading e.g. overview, causes
app.py
from flask import Flask, render_template
app = Flask(__name__)
app.route('/home')
def home(): render_template('home.html')
@app.route('/diseases/<disease>/<subheading>')
def diseases(disease=None, subheading=None):
return render_template('diseases.html', disease='new')
app.run(debug=True)
路由需要变量或给出 404 错误。参数默认值更改为 'disease' & 'sub',但加载站点。com/diseases 也给出 404。仅添加变量,例如site.com/diseases/diabetes/treatment 有效,但如果有人只键入 site.com/diseases 或 site.com/diseases/diabetes 怎么办?我找不到任何人这样做的例子,每个人都只是陈述所需的变量,然后遵守它们,所以这可能是不理解标准 Web 应用程序过程的问题。理想情况下,URLs 可以扩展到任意长度,例如/diseases/diabetes/treatment/treatmentX,但我有点迷茫。
编辑
我通过
取得了进步
@app.route('/diseases/<path:queries>)
路径:元素将任何 / 视为文本,因此我现在可以
/diseases/diabetes/treatment/treatmentX
并在函数中做
queries.split('/')
以获得离散的 URL 部分。这似乎有点啰嗦,但也许事情就是这样完成的?
您可以为同一个函数定义多个路由,并在路由定义中设置默认值。这是我的建议:
@app.route('/diseases', defaults={'disease': None, 'subheading': None})
@app.route('/diseases/<str:disease>/<str:subheading>')
def diseases(disease, subheading):
return render_template('diseases.html', disease='new')
已尝试使用 Python 2.7s Flask 完成此操作几个小时:
site.com/diseases : gives a page where I can list all diseases
site.com/diseases/diseaseX : list of subtopics for diseaseX
site.com/diseases/diseaseX/subHeading : so a url can be shared that brings users to a specific subheading e.g. overview, causes
app.py
from flask import Flask, render_template
app = Flask(__name__)
app.route('/home')
def home(): render_template('home.html')
@app.route('/diseases/<disease>/<subheading>')
def diseases(disease=None, subheading=None):
return render_template('diseases.html', disease='new')
app.run(debug=True)
路由需要变量或给出 404 错误。参数默认值更改为 'disease' & 'sub',但加载站点。com/diseases 也给出 404。仅添加变量,例如site.com/diseases/diabetes/treatment 有效,但如果有人只键入 site.com/diseases 或 site.com/diseases/diabetes 怎么办?我找不到任何人这样做的例子,每个人都只是陈述所需的变量,然后遵守它们,所以这可能是不理解标准 Web 应用程序过程的问题。理想情况下,URLs 可以扩展到任意长度,例如/diseases/diabetes/treatment/treatmentX,但我有点迷茫。
编辑 我通过
取得了进步@app.route('/diseases/<path:queries>)
路径:元素将任何 / 视为文本,因此我现在可以
/diseases/diabetes/treatment/treatmentX
并在函数中做
queries.split('/')
以获得离散的 URL 部分。这似乎有点啰嗦,但也许事情就是这样完成的?
您可以为同一个函数定义多个路由,并在路由定义中设置默认值。这是我的建议:
@app.route('/diseases', defaults={'disease': None, 'subheading': None})
@app.route('/diseases/<str:disease>/<str:subheading>')
def diseases(disease, subheading):
return render_template('diseases.html', disease='new')