在Django中,实现用户登录和退出是非常简单的,主要涉及到视图函数和模板的编写。
下面是实现用户登录和退出功能步骤:
创建Django项目
创建Django项目并在其中创建一个名为 "accounts " 的应用程序。
django-admin startproject myproject
cd myproject
python manage.py startapp accounts
创建 "login " 的 URL 路由
创建一个名为 "login " 的 URL 路由,用于处理用户登录页面和用户登录请求。
在 "urls.py " 文件中,添加以下代码:
from django.urls import path
from .views import *
urlpatterns = [
path('login/', login_view, name='login'),
path('logout/', logout_view, name='logout'),
]
创建用户登录的视图函数
在 "views.py " 文件中,添加以下代码:
from django.shortcuts import render, redirect
from django.contrib.auth import authenticate, login, logout
def login_view(request):
if request.method == 'POST':
username = request.POST['username']
password = request.POST['password']
user = authenticate(request, username=username, password=password)
if user:
login(request, user)
return redirect('/')
else:
message = 'Invalid login credentials!'
return render(request, 'accounts/login.html', {'message':message})
else:
return render(request, 'accounts/login.html')
这个视图函数接受从HTML表单POST过来的username和password,接着调用Django内置的方法 authenticate()
接收request和username,password两个参数,如果用户名和密码是正确的,该方法会返回一个用户对象,反之返回None。如果authenticate()
方法返回一个用户对象,视图函数将使用Django内置的 login()
方法登录该用户,并将其重定向到主页。 如果验证失败,将向页面发送一个错误消息。
创建用户退出的视图函数
在 "views.py " 文件中,添加以下代码:
def logout_view(request):
logout(request)
return redirect('/')
这个视图函数调用 Django 内置的 logout()
方法,该方法会将用户从系统中注销。
创建 "login.html" 的模板
创建一个名为 "login.html" 的模板,用于渲染用户登录表单。
在 "templates/accounts " 目录下,创建一个名为 "login.html " 的模板文件,添加以下代码:
{% if message %}
<p>{{ message }}</p>
{% endif %}
<form method="POST">
{% csrf_token %}
<label for="username">Username:</label>
<input type="text" name="username" required>
<label for="password">Password:</label>
<input type="password" name="password" required>
<input type="submit" value="Login">
</form>
这个模板文件渲染了一个包含用户名和密码输入框的表单,以及一个提交按钮。它还使用 {% csrf_token %} 标记来确保 POST 请求的安全性。
创建“base.html”通用模板
创建一个名为 “base.html”的通用模板,用于作为其他模板的父模板。 在“templates”目录下创建“base.html”,并添加以下内容:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8"/>
<title>{% block title %}{% endblock %}</title>
</head>
<body>
{% block content %}
{% endblock %}
</body>
</html>
创建 “home.html” 模板
创建一个名为 “home.html” 的模板,用以渲染用户已登录的页面。 将以下代码添加到“home.html”中:
{% extends "base.html" %}
{% block title %}Home{% endblock %}
{% block content %}
{% if user.is_authenticated %}
<p>Welcome, {{ user.username }}!</p>
<a href="{% url 'logout' %}">Logout</a>
{% else %}
<p>You are not logged in.</p>
<a href="{% url 'login' %}">Login</a>
{% endif %}
{% endblock %}
更新 INSTALLED_APPS
更新“settings.py”中的INSTALLED_APPS, 添加新应用程序 "accounts " 和 "django.contrib.auth "。
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'accounts',
]
至此,我们已经完成了Django HTML表单实现用户登录退出的完整攻略。通过上述步骤的操作,用户可以通过表单输入用户名和密码来登录系统,也可以通过点击“Logout”按钮来退出系统。在“Home”页面上,用户可以看到系统当前的登录状态 。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解Django HTML表单实现用户登录退出 - Python技术站