[英]django login required not happening
登錄后我無法重定向頁面。 我正在使用django 1.7。
#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中 ,假設登錄頁面后它將自動重定向。 但這對我來說不是真的。 我已經讀過這個和這個 。 他們告訴以表格形式將get參數發送到隱藏字段中。 我不認為這是對的。 我覺得應該有一個明確的方法。
誰能告訴我我哪里錯了?
我不明白 您的條件是在開機自檢模式下
如果request.method ==“ POST”
然后嘗試使用GET參數重定向...
您需要在表單中傳遞“ next”值,並通過POST ['next']獲取它
范例:
if 'next' in request.POST:
return HttpResponseRedirect(request.POST['next'])
else:
return HttpResponseRedirect('/home/')
通過為next
param.login.html添加隱藏字段來解決
form class="form-signin" method="post" action="{% url 'login' %}">{% csrf_token %}
<input type="hidden" name="next" value="{{ next }}" />
<h2 class="form-signin-heading">Please sign in</h2>
<label for="inputEmail" class="sr-only">Email address</label>
<input type="text" id="inputEmail" class="form-control" placeholder="Username" required="" autofocus="" name="username">
<label for="inputPassword" class="sr-only">Password</label>
<input type="password" id="inputPassword" class="form-control" placeholder="Password" required="" name="password">
<div class="checkbox">
<label>
<input type="checkbox" value="remember-me"> Remember me
</label>
</div>
<button class="btn btn-lg btn-primary btn-block" type="submit">Sign in</button>
</form>
我的登錄視圖是
def login(request):
if request.method == 'GET':
template='login.html'
context = {}
next = request.GET.get('next',None)
if next:
context['next'] = next
return render(request,template,context)
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)
template='home.html'
return HttpResponseRedirect(request.POST['next'])
else:
raise Http404("User is not active")
一個隱藏領域解決的問題。 但是對我來說, 文檔尚不清楚
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.