Как перейти на другую страницу после входа в django

Мне все еще интересно, как перенаправить после успешного входа в систему. На данный момент он просто перенаправляет меня, вероятно, по умолчанию, на страницу администратора django. Конечно, это не то, что мне нужно, и я хочу, чтобы меня перенаправляли в настраиваемое представление с настраиваемым шаблоном — если быть точным, конечно, тот, где я использовал @login_required декоратор. Вот мои views.py:

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'),
)

Структура выглядит так: Projectname _> Appname(programm) _> templates _> index.html, liste.html, Registration(direction) _> login.html


person BoJack Horseman    schedule 20.02.2014    source источник
comment
Покажите нам свой вид входа. Вам, вероятно, просто понадобится HttpResponseRedirect вместо рендеринга.   -  person J. Ghyllebert    schedule 20.02.2014
comment
Хорошо, теперь это будет довольно неудобно для меня. Я не ожидал, что напишу свое собственное представление входа в систему. Когда я использую декоратор @login_required, я всегда думал, что загружается пользовательский шаблон Django, и я могу использовать его для входа в систему. Каков тогда правильный путь?   -  person BoJack Horseman    schedule 20.02.2014
comment
Взгляните на docs.djangoproject.com. /en/dev/topics/auth/default/   -  person J. Ghyllebert    schedule 20.02.2014


Ответы (1)


Почему бы не использовать переменную в settings.py:

LOGIN_REDIRECT_URL = '/whatever/page/'

Конечно, это если вам нужно всегда перенаправлять всех людей на одну и ту же страницу при каждом входе в систему.

person rush    schedule 20.02.2014