python - 如何在烧瓶中制作高级 url 路由?
问题描述
这是我的代码:
@app.route("/")
@app.route("/<type>")
@app.route('/page/<int:page>')
def index(type="top", page=0):
perpage=5
startat=page*perpage
cur = mysql.connection.cursor()
if type=='top':
cur.execute("SELECT * FROM posts ORDER BY likes DESC LIMIT %s, %s", (startat,perpage))
data = cur.fetchall()
cur.close()
return render_template("index.html", dat=data)
elif type=='new':
cur.execute("SELECT * FROM posts ORDER BY created_at DESC LIMIT %s, %s", (startat,perpage))
data = cur.fetchall()
cur.close()
return render_template("index.html", dat=data)
我正在尝试通过毫无问题地一起工作来按顺序进行分页:
/page/1
作品- 但
/new/page/1
不工作
那么如何解决这个问题呢?
解决方案
您创建了一个糟糕的 url 架构:有两个相似的 url:@app.route("/page")
并且@app.route("/<type>")
因为type
是一个字符串变量,可以分配给page
值。
无论如何,要解决您的问题,您需要创建一个不混淆的网址。例如:
@app.route("/")
@app.route("/page/<type>/")
@app.route('/page/<type>/<int:page>')
def index(type="top", page=0):
perpage=5
#...
在这种情况下,type
不能将空字符串作为默认值分配。
其他可能的解决方案:
@app.route("/")
@app.route("/some-text/<type>")
@app.route('/page/<int:page>')
def index(type="top", page=0):
perpage=5
推荐阅读
- reactjs - 来自通量存储的数据返回 null
- python - & 解压 bz2 文件时出乎意料
- javascript - Javascript - 使用数据间隔、年份过滤器和输入过滤器进行表格搜索
- javascript - 如何使用 jsf 和 javascript 显示数据?
- awk - 如何使用 vim 命令或 sed/awk 命令将具有不同列数的行分隔到另一个文件中?
- javascript - Knockout JS foreach 作为函数的输入
- swift - SwiftUI TabView 在添加/删除 CoreData 的元素期间给出错误消息
- javascript - 如何使用 Mongoose 获取数组中的特定对象
- html - 页脚与内容无关(Vuejs)
- c# - Asp.Net Core 错误:InvalidOperationException:未找到视图“11c8d3ac-b5f4-47c0-8d68-b1704f2fdc43”