我正在尝试重定向到带有参数的 URL。 部分views.py
def membership(request):
errors = []
members = Member.objects.all()
...
if request.POST.get('subject', '') == "member_details":
member = members.filter(id = request.POST.get('member', ''))
return redirect("/membership/details/", m = member)
...
return render(request, "membership.html", {"errors": errors, 'members': members})
我需要重定向到“membership/details/”,但使用“member”作为参数或至少使用成员 ID。
这是我的 url.py 的一部分:
url(r'^admin/', include(admin.site.urls)),
url(r'^input/book/', 'library_app.views.input_book'),
url(r'^membership/$', 'library_app.views.membership'),
url(r'^membership/details/', 'library_app.views.member_details'),
url(r'^$', 'library_app.views.main'),
以及我的views.py的“member_details”部分:
def member_details(request, m="doesn't work"):
error = []
if request.method == "POST":
pass
return render(request, "member_details.html", {'m': m})
感谢您的帮助!
最佳答案
如果您想在 url 中包含该成员,请添加 named group到你的网址模式。例如,您可以包含以下内容的成员(member) ID:
url(r'^membership/details/(?P<member_id>\d+)/', 'library_app.views.member_details', name='member_details'),
然后,您的 View 将包含 member_id
作为关键字参数。
from django.shortcuts import get_object_or_404
def member_details(request, member_id):
member = get_object_or_404(id=member_id)
# you might want to add checks to make sure
# that the logged in user is allowed to see this members details!
...
然后您可以使用 redirect
带有硬编码的网址:
return redirect("/membership/details/%s/ % member.pk")
或者,最好包含 View 名称和 member_id 作为参数。
return redirect("member_details", member_id=member.id)
关于python - 带参数的 django.shortcuts.redirect,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21779424/