0

我還在想如何在成功登錄後重定向。目前它只是將我重定向到django管理頁面,可能默認爲這當然不是我想要的,我想用自定義模板重定向到一個自定義視圖 - 當然這是我使用裝飾器的@login_required。這裏是我的views.py:如何在django登錄後轉到另一個頁面

from django.shortcuts import render 
from programm.models import * 
from django.contrib.auth.decorators import login_required 

def index(request): 
     return render(request, 'index.html') 

@login_required(login_url='/login/') 
def liste(request): 
     return render(request, 'liste.html', {'lObj': learningObjective.objects.all()}) 

這是我登錄模板

<!DOCTYPE html> 
<html lang="{{ LANGUAGE_CODE|default:"de-de" }}" > 
<head> 
<title>{% block title %}{% endblock %}</title> 
</head> 
<body> 

{% if form.errors %} 
<p>Your username and password didn't match. Please try again.</p> 
{% endif %} 

<form method="post" action="{% url 'django.contrib.auth.views.login' %}"> 
{% csrf_token %} 

<div class = "table"> 
<table> 
<tr> 
    </td><td><p><u>Login Seite</u></p></td> 
</tr> 
<tr> 
    <td>{{ form.username.label_tag }}</td> 
    <td>{{ form.username }}</td> 
</tr> 
<tr> 
    <td>{{ form.password.label_tag }}</td> 
    <td>{{ form.password }}</td> 
</tr> 
<tr> 
<td><input type="submit" value="/programm/liste.html" /></td> 
<input type="hidden" name="next" value="/programm/liste.html" method="post"/> 
</form> 
</tr> 
<table> 
</div> 
</body> 
</html> 

這是模板我想重定向到,這也得到了@login_required裝飾:

<!DOCTYPE html> 

<html> 
<head> 
{% load staticfiles %} 
<link rel="stylesheet" type="text/css" href="{% static 'programm/style.css' %}" /> 
<div class = "title"> 
<h1 align = "center">Lernziele</h1> 
</div> 
</head> 

<body> 
<div class="liste"> 
{% for lObj_ in lObj %} 
    <li>Lernziel: {{ lObj_.learningObjectives }}</li> 
{% endfor %} 
</div> 
</body> 
</html> 

而這是我的urls.py

from django.conf.urls import patterns, url 
from programm import views 
from django.conf import settings 

urlpatterns = patterns('', 
     url(r'^$', views.index, name = 'index'), 
     url(r'^liste.html$', views.liste, name = 'liste'), 
) 

結構看起來像這樣:項目名_ > APPNAME(PROGRAMM)_>模板_ >的index.html,liste.html,登記(方向)_>登錄。 HTML

+0

向我們顯示您的登錄視圖。你可能只需要一個HttpResponseRedirect而不是渲染器。 –

+0

好吧,現在對我來說會非常尷尬..我沒有想到寫我自己的登錄視圖。我一直認爲,當我使用@login_required裝飾器時,Django的自定義模板正在加載,我可以使用它來登錄。那麼正確的方法是什麼? –

+0

查看https://docs.djangoproject.com/en/dev/topics/auth/default/#django.contrib.auth.login –

回答

3

爲什麼不使用變量在settings.py:

LOGIN_REDIRECT_URL = '/whatever/page/' 

當然,這是如果你需要總是重定向所有的人在同一頁每次登錄。

相關問題