【发布时间】:2017-05-24 07:10:04
【问题描述】:
我有一个链接到一个网址的链接,如下所示:
<a href="{% url 'sign_in' %}" title="Click here to sign in">Sign in</a>
这链接到 Django 中的一个新视图,我的 URL 模式如下所示:
url(r'^sign-in/', sign_in, name="sign_in")
在我的sign_in 视图中,我想访问用户最初单击链接的 URL。具体来说,我想将此 URL 的一个名为 returnUrl 的参数添加到新 URL。然后我的sign_in 视图可以重定向到这个新的 URL,相应的视图将可以访问 returnUrl 参数。
例如:
- 用户点击“登录”
- 网站导航到 example.com/sign-in/
-
sign_in视图重定向到sign_in_page,将步骤 1 中的 URL 添加为参数。 -
sign_in_page有权访问 URL 参数。
如何在 Django 中实现这一点?我的观点是这样的……
from django.http import HttpResponse
from django.shortcuts import render, redirect
from django.core.urlresolvers import reverse
from django.http import HttpResponseRedirect
from django.core.urlresolvers import resolve
def sign_in(request):
# I need the original URL the user came from here
# to add it as `returnUrl` below:
return HttpResponseRedirect(reverse('sign_in_page') + '?returnUrl=example.com/whatever')
def sign_in_page(request):
return render(request, 'sign-in.html')
如果我使用重定向走上了一条错误而黑暗的道路,请告诉我。对我来说,这似乎是添加 URL 参数的唯一方法——这对我的实现很重要。如果您知道没有重定向的方法 - 请告诉我!
【问题讨论】:
-
能说说参数吗?意思是你是怎么保存的?整个页面的参数是否不同?
-
returnUrl参数需要是用户点击“登录”链接时的当前 URL。登录过程完成后,我可以在我的sign_in_page视图中使用它来将用户重定向回他们点击链接的原始页面。