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
向我们显示您的登录视图。你可能只需要一个HttpResponseRedirect而不是渲染器。 –
好吧,现在对我来说会非常尴尬..我没有想到写我自己的登录视图。我一直认为,当我使用@login_required装饰器时,Django的自定义模板正在加载,我可以使用它来登录。那么正确的方法是什么? –
查看https://docs.djangoproject.com/en/dev/topics/auth/default/#django.contrib.auth.login –