我在登录用户时收到DisallowedRedirect错误 这两个观点是
def login(request):
c={}
c.update(csrf(request))
form=LoginForm()
errors=()
c['form']=form
c['errors']=errors
return render(request,'news/login.html',c)
def auth_view(request):
username=request.POST.get('username','')
password=request.POST.get('password','')
user=auth.authenticate(username=username,password=password)
if user is not None:
auth.login(request,user)
return HttpResponseRedirect('news:home',request)
else:
form=LoginForm()
errors=('Invalid Username or Password',)
return render(request,'news/login.html', {'form':form,'errors':errors})
答案 0 :(得分:14)
而不是
return HttpResponseRedirect('news:home',request)
这个:
return HttpResponseRedirect(reverse('news:home'))
或
return redirect('news:home')
或
return redirect(reverse('news:home'))
答案 1 :(得分:1)
如果要重定向到自定义方案,除了当前答案外,还可以使用以下代码:
class CustomSchemeRedirect(HttpResponsePermanentRedirect):
allowed_schemes = ['tg']
def redirect(request):
return CustomSchemeRedirect('tg://resolve?domain=durov')
答案 2 :(得分:0)
确保在出现此错误时,您在网址前面提供了正确的方案。默认情况下,django.http.HttpResponseRedirect
不允许重定向到不以以下方案之一开头的网址:
因此,如果您提供的网址是localhost:8000
,请确保将其更改为http://localhost:8000
以使其生效。
答案 3 :(得分:0)
HttpResponseRedirect.allowed_schemes.append('news')