Django:表单提交上的调用函数

时间:2017-06-22 18:12:05

标签: python html django

我有以下问题。我基本上想拥有一个自己的登录页面。

views.py

from django.contrib.auth import authenticate, login, logout
from django.shortcuts import render, redirect


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

def login_page(request):
    return render(request, 'home/login.html')

def user_login(request):
    username = request.POST['username']
    password = request.POST['password']
    user = authenticate(username=username, password=password)

    if user is not None:
        login(request, user)
        # Redirect to a success page.
        return redirect('/profil/')
    else:
        # Return an 'invalid login' error message.
        return redirect('/login/')

urls.py

from django.conf.urls import url
from . import views

urlpatterns = [
    url(r'^$', views.index, name='index'),
    url(r'^login/', views.login_page, name='login'),
    url(r'^login/login', views.user_login, name='login_action'),
    url(r'^logout/', views.user_logout, name='logout')
]

的login.html

{% extends 'base.html' %}

{% block body %}


<div class="container">

    <div class="row">
         <div class="col-md-4 col-md-offset-4" id="login-page">
            <h1>Login</h1>
            <form class="form" action="{% url 'login_action' %}" method="post">
                {% csrf_token %}
                <div class="form-group">
                    <label for="username">Benutzername</label>
                    <input type="text" id="username" class="form-control" name="username"/>
                </div>
                <div class="form-group">
                    <label for="password">Passwort</label>
                    <input id="password" type="password" class="form-control" name="password"/>
                </div>
                <div>
                    <button type="submit" class="btn btn-primary">Anmelden</button>
                </div>
            </form>
        </div>
    </div>
</div>

{% endblock %}

现在的问题是当我点击提交按钮然后我登陆页面login/login,但我没有被重定向。我还尝试在user_login方法中添加一个print语句,以检查它是否达到了这一点,但似乎没有。

我的错误是什么?谢谢你的帮助

0 个答案:

没有答案