我有两个共享一个包含标签的网址,在包含标记内我有另一个显示表单的网址,此表单重定向到两个网址之一。 如何使此重定向动态化? 例如。如果表单在url_1中重定向到url_1,并且url_2中的表单是否重定向到url_2?
以下是我的代码以获得更好的解释(希望如此):
# This form lives inside of an inclusion tag, so many urls could display it
<form method="POST" action={% url cv_toggle %}>
<input type="hidden" name="c_id" value={{ c.id }}>
...
{% csrf_token %}
</form>
# corresponds to name="cv_toggle" as a url
def toggle_vote(request):
...
next = reverse("frontpage") # this url should redirect to the current
# url requested, and not just "frontpage"
return HttpResponseRedirect(next)
答案 0 :(得分:1)
您可以使用请求对象来确定当前的URL,如下所示:
<form method="POST" action="...">
<input type="hidden" name="next" value="{{ request.get_full_path }}">
...
{% csrf_token %}
</form>
查看:
from django.utils.http import is_safe_url
def toggle_vote(request):
...
next_url = request.POST.get('next')
if not next_url or not is_safe_url(url=next_url, host=request.get_host()):
next_url = reverse('frontpage')
return HttpResponseRedirect(next_url)
Django登录表单使用这样的next
字段来确定登录后重定向用户的位置。您可以将此URL也存储为GET参数而不是POST,或者您可以使用它们以获得更好的灵活性和更容易的测试。