2013-11-01 198 views
0

我寫了一個關於登錄的函數。如下所示:Django:登錄成功後重定向

def login(request,template_name="login/login.html"): 

    res = {} 
    if(request.method == "POST"): 
     username = request.POST.get('username') 
     password = request.POST.get('password') 

     user = auth.authenticate(username=username,password=password) 

     if user is not None: 
      if user.is_active: 
       auth.login(request,user) 
       redirect_to = reverse("home") 
       return HttpResponseRedirect(redirect_to) 

    return render_to_response(template_name,RequestContext(request,res)) 

如果登錄檢查成功,它會重定向到我的主頁。 我的問題是,它顯示正確的頁面內容。 但URL是錯誤的。它留在登錄網址上。

如何顯示重定向頁面的URL?

的HTML代碼:

<form class="authenticate" action="{{ next }}" method="post"> 
    {% csrf_token %} 
    <table border="0"> 
     {{ login_form }} 
    </table> 
    <input type="hidden" name="action" value="login" /> 
    <input type="hidden" name="next" value="{{ next }}" /> 
    <input type="submit" id="login-btn" value="login" /> 
</form> 

的urls.py是:

urlpatterns = patterns('', 
url(r'^$','mypro.views.home',name='home'), 
url(r'^login/',include('login.urls')), 
url(r'^admin/doc/', include('django.contrib.admindocs.urls')), 
url(r'^admin/', include(admin.site.urls)), 
) 


urlpatterns = patterns('', 
url(r'^$','login.views.login',name="login"), 
url(r'^logout/$','login.views.logout',name="logout"), 
) 

我發現,無論Firebug的響應和HTML秀 「刷新頁面以獲取來源:http://xx.xx.xx.xx:8002/h5acr/login/refresh/」。 如何重新加載頁面?

+0

顯示我們urls.py – Rohan

+0

我在上面 – Daney

+0

它們添加該代碼應該重定向到家裏並更改網址爲好。你在這裏錯過了一些其他的信息? HttpResponseRedirect()是否被調用?如果登錄成功,則爲 – Rohan

回答

0

在您的登錄表單中,操作應該是登錄網址,而不是next

<form class="authenticate" action="{% url 'login' %}" method="post"> 
+0

我也試過這個。但它沒有工作 – Daney

+0

即使這並沒有解決問題,你應該做這個改變。登錄數據應發佈到登錄頁面。希望你設法解決你的問題。 – Alasdair

+0

我明白了,謝謝。我發現它不是由重定向本身引起的。當瀏覽器發送請求來獲取我的目標網址時。它顯示「重新加載頁面獲取源代碼:http://54.250.167.254:8002/h5acr/home/」。我如何重新加載它? – Daney