如何在 Django views.py 中使用 int: 参数呈现重定向 URL?
Posted
技术标签:
【中文标题】如何在 Django views.py 中使用 int: 参数呈现重定向 URL?【英文标题】:How to render redirect a URL with an int: parameter in Django views.py? 【发布时间】:2021-05-13 05:36:05 【问题描述】:我正在尝试在 Django 中创建一个表单,当表单在特定帐户下未正确填写时会显示错误。我希望它重新路由到与表单相同的页面,并且 url 必须有一个 int: 参数。对于我的 urls.py,我有 'edit/int:user_id>,views.edit.
我苦苦挣扎的地方是如何在views.py 中传递渲染重定向?我试过渲染重定向('/edit/int:user_id')、('/edit/int:user.id')、('/edit/user.id')等,但没有任何效果。每次我只是得到“找不到路径”。
如何根据我的 urlpatterns 使用 int 参数在 views.py 中编写重定向?
views.py
def update(request, user_id):
errors = User.objects.empty_validator(request.POST)
if len(errors):
for key, value in errors.items():
messages.error(request, value)
return redirect('update_user', user.id)
else:
if 'user_id' in request.session:
user = User.objects.get(id=job_id)
user.title = request.POST['title']
user.save()
return redirect(f'/dashboard')
return redirect('/')
【问题讨论】:
你能告诉你urls.py
指定你要重定向的路线吗?
这是我的 urls.py: path('/edit/首先,您应该通过更新您的urls.py
来命名您的路线:
path('edit/<int:user_id>/update', views.update, name='update_user')
那么,在你看来,你可以像这样使用redirect函数:
redirect('update_user', user_id)
【讨论】:
我刚试过,这是我得到的错误:找不到页面 (404) 请求方法:GET 请求 URL:127.0.0.1:8000/jobs/edit 使用 python_exam2.urls 中定义的 URLconf,Django 尝试了这些 URL 模式,按以下顺序: create_user login logout dashboard jobs/new jobs/create_form jobs/edit/user_id
替换user.id
我刚把它改成user_id,这是我得到的错误:MultiValueDictKeyError at /edit/4/update 'title' 请求方法:GET 请求 URL:127.0.0.1:8000/edit/4/update Django 版本:3.1 异常类型: MultiValueDictKeyError 很抱歉一直打扰您,顺便感谢您的帮助!我很感激!
@Crystal 这似乎是一个不同的问题。此外,正如 Benbb96 所建议的,您应该编辑您的问题以添加任何代码/说明。您可以通过按帖子/问题下方的编辑按钮来做到这一点。以上是关于如何在 Django views.py 中使用 int: 参数呈现重定向 URL?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Django views.py 中使用 int: 参数呈现重定向 URL?
如何在 Django 中重复调用 views.py 中的函数?