Python 未找到烧瓶路径
我正在使用flask和sqlalchemy构建一个目录应用程序,但我的路线之一是提供404,我不知道为什么。以下是路线和功能的代码:Python 未找到烧瓶路径,python,flask,flask-sqlalchemy,Python,Flask,Flask Sqlalchemy,我正在使用flask和sqlalchemy构建一个目录应用程序,但我的路线之一是提供404,我不知道为什么。以下是路线和功能的代码: @app.route('/Category/<string:category_name>/Item/new', methods=['GET', 'POST']) def newItem(category_name): user = getUser() if user is None: return redirect('/
@app.route('/Category/<string:category_name>/Item/new', methods=['GET', 'POST'])
def newItem(category_name):
user = getUser()
if user is None:
return redirect('/login')
if request.method == 'POST':
newItem = Category(name=request.form['name'],
description=request.form['description'], creator=session['username'],
category_id=db.query(Category.id).filter_by(category_name=category_name).all())
db.add(newItem)
db.commit()
return redirect(url_for('showCategory(category_name)'))
else:
return render_template('newItem.html', categories=categories)
@app.route('/Category//Item/new',methods=['GET','POST'])
def新项目(类别名称):
user=getUser()
如果用户为无:
返回重定向(“/login”)
如果request.method==“POST”:
newItem=Category(name=request.form['name'],
description=request.form['description'],creator=session['username'],
category\u id=db.query(category.id).filter\u by(category\u name=category\u name).all())
db.add(newItem)
db.commit()
返回重定向(url_for('showCategory(category_name)'))
其他:
返回呈现模板('newItem.html',categories=categories)
模板文件夹中确实存在newItem.html模板,并使用我用于查看项目的另一个路径:@app.route('/Category//Item/
起作用,因此正在定义Category\u名称。我要使用的url是https://localhost:5000/Category/Sports/Item/new
而且体育是数据库中的一个类别,我不明白为什么我会得到404
回溯(显示试图进入showItem路线而不是newItem路线):您遇到异常。这意味着视图函数调用成功,但现在可以找到数据。您遇到异常。这意味着视图函数调用成功,但现在可以找到数据。您的URL规则命中了错误的函数
@app.route('/Category//Item/
恰巧相配
https://localhost:5000/Category/Sports/Item/new
您需要在第一个线段上添加一个额外的线段,如
@app.route('/Category//Item/existing/
您的URL规则使用了错误的函数
@app.route('/Category//Item/
恰巧相配
https://localhost:5000/Category/Sports/Item/new
您需要在第一个线段上添加一个额外的线段,如
@app.route('/Category//Item/existing/
能否显示完整的堆栈跟踪?当您尝试在这行代码中重定向时是否会发生错误-返回重定向(url\u for('showcegory(Category\u name)'))
?你能提供一个到你的Git repo的链接吗?@AamirKhan你为什么需要到他的repo的链接?@Nurzhan添加了回溯,它尝试使用路径查看名为“new”的项目不是进入我定义的路径。Aamir,它是一个本地git repo,不在线。@WillScott Sqlalchemy抱怨它找不到特定的记录。解决这个问题,看看它是否有效。你能显示完整的堆栈跟踪吗?当你尝试在这一行代码中重定向时是否会发生错误-返回重定向(url\u for('showcegory(category_name);
?你能提供一个到你的Git repo的链接吗?@AamirKhan为什么你需要到他的repo的链接?@Nurzhan添加了回溯,它试图使用该路径查看名为“new”的项目不是进入我定义的路由。Aamir,它是一个本地git repo,不在线。@WillScott Sqlalchemy抱怨它找不到特定的记录。修复它,看看它是否工作。当我进入该函数的路由时,该视图函数工作正常,它抛出异常,因为它试图运行showItem()当路由应该运行newItem()时,请确认。您正在调用GEThttps://localhost:5000/Category/Sports/Item/new
(用于newItem
视图)并使用showItem
视图进行回溯)?当我转到该函数的路由时,该视图函数工作正常,它会引发异常,因为它试图运行showItem(),而路由应该运行newItem(),所以,只是为了确认。您正在调用GEThttps://localhost:5000/Category/Sports/Item/new
(用于新项目
视图)以及通过showItem
view获取回溯)?此外,可能是顺序问题(注册视图时)。虽然您可以通过更改顺序来解决此问题,但最好确保您的路由完全明确,如果一个字符串可以匹配其中两个,请更改一个。这是一个解决方案,但我希望URL尽可能简单,@dizpers它的顺序是正确的。我做了大量的更改,我不确定是什么确切地修复了它,但它现在正在工作,所以我接受这个答案,因为它是一个解决方案。@PaulBecotte agree:)您可以使用id而不是名称,为GET路由提供
,同时仍然是明确的。因此,可能是顺序问题(在注册视图时)。虽然您可以通过更改顺序来解决此问题,但最好确保您的路由完全明确,如果一个字符串可以匹配其中两个,请更改一个。这是一个解决方案,但我希望URL尽可能简单,@dizpers它的顺序是正确的。我做了大量的更改,我不确定是什么确切地修复了它,但它现在正在工作,所以我接受这个答案,因为它是一个解决方案。@PaulBecotte agree:)您可以使用id而不是名称,为GET路由提供
,同时仍然是明确的