Я не могу перенаправить страницу после входа в систему. Я использую django 1.7.django логин не требуется
#settings.py
# login URL
LOGIN_URL = '/login/'
#urls.py
url(r'^home/order',views.buy_order,name="buy_order"),
url(r'^login/$',views.login,name='login'),
url(r'^login_submit/$',views.login_submit,name='login_submit'),
#views.py
@login_required(login_url='/login/')
def buy_order_confirm(request):
pass
def login(request):
template='login.html'
return render(request,template)
def login_submit(request):
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_user(request, user)
return HttpResponseRedirect(request.POST['next']) # gives error : *** MultiValueDictKeyError: "'next'"
else:
raise Http404("User is not active")
else:
raise Http404("Not a valid request")
return render(request,template)
В doc указано, что после страницы входа он будет перенаправлен автоматически. Но это не для меня. Я прочитал this и this. Они говорят, чтобы отправить параметры get в скрытое поле в форме. Я не чувствую, что это правильно. Я чувствую, что должен быть ясный путь.
Может ли кто-нибудь сказать мне, где я ошибаюсь?
привет, извините, что это моя ошибка. для 'request.POST ['next']', я получаю такую же '*** MultiValueDictKeyError:" 'next' ''error. Следующее значение видно только из 'request.META ['HTTP_REFERER']' as ''http: // localhost: 8000/login /? Next =/home/order'' – Netro
Спасибо, мне нужно добавить скрытое поле формы для следующего параметра , Он решает проблему. Но мне это не показалось в doc 'https: // docs.djangoproject.com/en/1.7/topics/auth/default/# django.contrib.auth.decorators.login_required'. – Netro