我正在使用djnago HttpResponseRedirect
在登录后返回上一页。问题是,我提供了错误的重定向网址(next
网址和当前网址的组合)
假设我已经从“mysite.com/home”进入并且登录页面网址为“mysite.com/login”我想返回“mysite.com/home”但是重定向网址是mysite.com/login/?next=/home / 。
我做错了什么?
这是我的view
,负责登录:
if request.method == 'POST':
username = request.POST['username']
password = request.POST['password']
user = authenticate(username=username, password=password)
if user is not None:
if user.is_active:
login(request, user)
# next is "/home/" and that is exactly what I expect
return HttpResponseRedirect(request.GET.get('next', reverse('products.views.show_homePage')))
答案 0 :(得分:0)
我遇到了同样的问题!
试试这个:
return HttpResponseRedirect(reverse('products.views.show_homePage'))
请务必明确包含:from django.core.urlresolvers import reverse
这将使页面发送重定向到您的主页..希望..
这是我做的:
登录:
# Login
def login(request):
if request.user.is_authenticated():
return HttpResponseRedirect("/test/") # Redirect to a tool directory page.
form = loginForm(request.POST or None)
if request.POST and form.is_valid():
user = form.login(request)
if user:
auth_login(request, user)
return HttpResponseRedirect("/test/") # Redirect to a success page.
return render(request, 'login.html', {'form': form})
注销:
# Logout user method
def logout(request):
auth_logout(request)
return HttpResponseRedirect(reverse('loginregistration.views.login')) # Redirect to a success page.
答案 1 :(得分:0)
以下为我工作的作品: HttpResponseRedirect类 使用三种类型的网址:
(1)完全限定的URL,例如'https://www.yahoo.com/search/'
(2)没有域的绝对路径,例如'/ search /'
(3)相对路径,例如'search /'
如果您的函数未返回 完全限定的URL ,则可能是将url附加到现有url的可能原因。
有关更多信息,请参考Django官方文档: https://docs.djangoproject.com/en/3.0/ref/request-response/