gpt4 book ai didi

django - 重定向到 django FormView 中的下一个 URL

转载 作者:行者123 更新时间:2023-12-04 14:12:24 28 4
gpt4 key购买 nike

我正在使用 Django 1.7Python 3.4 .我有一个场景,我希望用户被重定向到另一个 View ,如 next 中所定义。 GET 参数,在他们登录后。但是使用我当前的设置,它们总是被重定向到主页。我希望有一种方法可以在 get_success_url 中做到这一点的FormView类(class)。

下面是我的代码

URL 中的下一个参数

http://localhost:8000/login/?next=/ads/new

View .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,我该如何重定向到下一个 URL?

最佳答案

将数据作为 GET 参数包含在您的成功 url 中。

def get_success_url(self):
# find your next url here
next_url = self.request.POST.get('next',None) # here method should be GET or POST.
if next_url:
return "%s" % (next_url) # you can include some query strings as well
else :
return reverse('home') # what url you wish to return

希望这对你有用。

关于django - 重定向到 django FormView 中的下一个 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26988583/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com