2014-09-25 39 views
0

後,原來的要求我練習如何使用Django登錄,但登錄
之前不能重定向頁面,請教我如何做到這一點非常感謝您如何使用Django重定向到登錄

我的項目名稱是:凸出
我有一個應用程序名稱:APP1

當我去http://127.0.0.1:8000/f/index/它會重定向到http://127.0.0.1:8000/accounts/login/?next=/f/index/

後,我輸入用戶名和密碼,
我想重定向到http://127.0.0.1:8000/f/index/(通過參數?next=/f/index/),但不知道該怎麼做。

APP1/views.py:

from django.contrib.auth.decorators import login_required 
@login_required 
def index(request): 
     logger.info('test') 
     .... 

凸出/ urls.py:

urlpatterns = patterns('', 
    url(r'^accounts/login/$', 'proj.views.login'), 
    url(r'^accounts/logout/$', 'proj.views.logout'), 
    url(r'^accounts/auth/$', 'proj.views.auth_view'), 

凸出/ views.py

from django.shortcuts import render_to_response 
from django.http import HttpResponseRedirect 
from django.contrib import auth 
from django.core.context_processors import csrf 

def login(request): 
    c={} 
    c.update(csrf(request)) 
    return render_to_response('proj/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(request.POST.get('next')) #not work 
    else: 
     return HttpResponseRedirect('/accounts/invalid') 

凸出/ login.html的:

{% if form.errors %} 
    <p class="error">Sorry.that's not valid </p> 
{% endif %} 


<form action="/accounts/auth/?next={{ request.get_full_path|urlencode }}" method="post">{% csrf_token %} 
    <label for="username" >User name:</label> 
    <input type="text" name="username" value="" id="username"> 
    <label for="password" >Password:</label> 
    <input type="password" name="password" value="" id="password"> 
    <input type="submit" value="login" /> 
</form>  
+1

我不清楚你想達到什麼目的。檢查[此鏈接](https://docs.djangoproject.com/en/1.7/topics/auth/default/#how-to-log-a-user-in)。你想將用戶重定向到「登錄」頁面還是不要。你有什麼錯誤嗎? – 2014-09-25 09:43:45

+0

當你訪問'index'視圖時發生了什麼?或者成功登錄後重定向到什麼頁面? – 2014-09-25 11:59:07

+0

對不起,我編輯我的問題來描述細節。當我嘗試'''返回HttpResponseRedirect(request.POST.get('next'))'''有錯誤'NoneType'對象沒有屬性'find'並且requesturl是''''http://127.0 .0.1:8000/accounts/auth /?next ='''似乎無法獲得''''''''''參數 – user2492364 2014-09-25 23:49:21

回答

0

views.py試試這個:

if user is not None: 
     auth.login(request,user) 
     return HttpResponseRedirect('/f/index/') 
0

,當你鍵入的URL,你是不是之前登錄,並Django的重定向到URL:輸入您的用戶名和密碼,並點擊提交按鈕後http://127.0.0.1:8000/accounts/login/?next=/f/index/ ,Django的重定向你使用URLresolver自動轉換爲http://127.0.0.1:8000/f/index/