【发布时间】:2015-01-15 07:16:21
【问题描述】:
我正在使用 Django 1.7 和 Python 3.4。我有一个场景,我希望用户在登录后被重定向到另一个视图,如next GET 参数中定义的那样。但是在我目前的设置下,它们总是被重定向到主页。我希望在FormView 类的get_success_url 中有一种方法可以做到这一点。
下面是我的代码
URL 中的下一个参数
http://localhost:8000/login/?next=/ads/new
views.py
from django.views.generic.edit import FormView
class LoginView(FormView):
template_name = 'users/login.html'
form_class = LoginForm
def get_success_url(self):
return reverse('home')
def form_valid(self, form):
form.user.backend = 'django.contrib.auth.backends.ModelBackend'
login(self.request, form.user)
messages.info(self.request, 'Login successful')
return super(LoginView, self).form_valid(form)
urls.py
url(r'^login/', LoginView.as_view(), name='login'),
url(r'^new$', 'apps.adverts.views.add_new_advert', name='new_advert'), # URL to use after login, in next param
通过上述设置,如果已定义,我如何重定向到除主页之外的下一个 URL?
【问题讨论】:
-
我查看了上面提到的链接,虽然它处理重定向到另一个对象/视图,但它没有显示如何在
get_success_url方法中获取GET参数以便传入nextURL。
标签: django redirect django-forms django-class-based-views