目录
- 1、Django
- 2、Django用户认证系统
-
- [User 模型:](#User 模型:)
- [Authentication 视图:](#Authentication 视图:)
- [认证后端 (Authentication Backends):](#认证后端 (Authentication Backends):)
- [Form 类:](#Form 类:)
- [中间件 (Middleware):](#中间件 (Middleware):)
- [权限和组 (Permissions and Groups):](#权限和组 (Permissions and Groups):)
- 3、创建一个django用户认证系统
-
- (1)创建和激活虚拟环境
- (2)安装Django
- (3)创建Django应用
- (4)检查Django安装
- (5)创建Django项目
- (5)配置自定义用户模型
- (6)更新settings.py文件
- (7)创建和应用迁移
- (8)创建注册和登录视图
- (9)创建url配置
-
- [在 myapp/urls.py 文件中定义 URL 路径:](#在 myapp/urls.py 文件中定义 URL 路径:)
- [在 myproject/urls.py 文件中包含应用的 URL 路径:](#在 myproject/urls.py 文件中包含应用的 URL 路径:)
- (10)创建模板
-
- 创建模板文件夹和模板文件:
- [创建 myapp/templates/registration/signup.html 文件:](#创建 myapp/templates/registration/signup.html 文件:)
- (11)运行服务器
- [(12)在浏览器中访问http://127.0.0.1:8000/accounts/signup/ 进行注册,访问 http://127.0.0.1:8000/accounts/login/ 进行登录。](#(12)在浏览器中访问http://127.0.0.1:8000/accounts/signup/ 进行注册,访问 http://127.0.0.1:8000/accounts/login/ 进行登录。)
1、Django
Django 是一个由 Python 编写的高级 Web 框架 ,旨在快速开发和干净、实用的设计。它鼓励使用模块化和可复用的代码,使得开发和维护复杂的网站变得更加容易
特点:
1. 快速开发:
Django 允许开发者在很短的时间内从设计到成品。
2. 可重用性:
Django 提供了大量的可重用代码库(Django apps),这些库可以轻松地集成到项目中。
3. 安全性:
Django 有助于开发者避免常见的安全漏洞,如 SQL 注入、跨站脚本攻击和跨站请求伪造等。
4. 可扩展性:
Django 的模块化设计使其易于扩展和自定义。
5. 良好的文档:
Django 拥有详尽且更新及时的文档,对开发者非常友好
2、Django用户认证系统
Django 自带一个强大的用户认证系统,提供了用户登录、注册、密码管理等功能。这个系统包含以下主要部分:
User 模型:
Django 提供了一个默认的 User 模型,其中包含了基本的用户信息,如用户名、密码、电子邮件等。
可以通过 django.contrib.auth.models.User 访问。
Authentication 视图:
Django 提供了现成的视图用于处理用户登录、注销、密码重置等。
例如,LoginView、LogoutView、PasswordChangeView 和 PasswordResetView。
认证后端 (Authentication Backends):
Django 允许使用自定义认证后端,以支持不同的认证机制(如 LDAP、OAuth 等)。
默认使用的是基于用户名和密码的认证后端。
Form 类:
Django 提供了用于处理用户注册和登录的表单类,如 UserCreationForm 和 AuthenticationForm。
中间件 (Middleware):
Django 提供了 AuthenticationMiddleware,用于将用户的认证状态与每个请求关联起来。
权限和组 (Permissions and Groups):
Django 提供了基于对象级别的权限系统,可以对用户和组分配不同的权限。
使用 Permission 和 Group 模型可以创建复杂的权限管理系统。
3、创建一个django用户认证系统
(1)创建和激活虚拟环境
powershell
# 进入项目目录
cd C:\Users\USERNAME\myproject
# 创建虚拟环境
python -m venv myenv
# 激活虚拟环境(Windows)
myenv\Scripts\activate
(2)安装Django
powershell
pip install django
![](https://img-blog.csdnimg.cn/direct/265e459fcf504d24bbce2ddd9eaf9e99.png)
(3)创建Django应用
powershell
python manage.py startapp myapp
(4)检查Django安装
powershell
pip show django
![](https://img-blog.csdnimg.cn/direct/e6a35ab9d0544bcdbe1a1e792c7fe60e.png)
(5)创建Django项目
django-admin startproject myproject
cd myproject
如果你仍然无法运行 django-admin,可能是因为环境变量配置不正确。可以手动将 Python 的 Scripts 文件夹路径添加到系统的 PATH 环境变量中。步骤如下:
打开控制面板,搜索 "环境变量"。
点击 "编辑系统环境变量"。
在系统属性窗口中,点击 "环境变量"。
在系统变量部分找到并选择 Path 变量,然后点击 "编辑"。
点击 "新建",然后添加你的 Python Scripts 文件夹路径,例如 C:\Python39\Scripts 或 C:\Users<你的用户名>\AppData\Local\Programs\Python\Python39\Scripts。
确认并保存所有更改。
(5)配置自定义用户模型
python
from django.contrib.auth.models import AbstractUser
from django.db import models
class CustomUser(AbstractUser):
phone_number = models.CharField(max_length=15, blank=True, null=True)
from django.contrib.auth.models import AbstractUser
这行代码从 Django 的认证框架中导入了 AbstractUser 类。AbstractUser 是一个抽象基类,提供了完整的用户认证系统所需的字段和方法。
from django.db import models
这行代码导入了 Django 的模型模块,模型是 Django 中用于定义数据库表结构的类 。
class CustomUser(AbstractUser)
这行代码定义了一个名为 CustomUser 的类,该类继承自 AbstractUser。继承 AbstractUser 意味着 CustomUser 将拥有 AbstractUser 提供的所有字段和方法。
phone_number = models.CharField(max_length=15, blank=True, null=True)
这行代码为 CustomUser 类添加了一个名为 phone_number 的新字段。该字段是一个字符字段,最大长度为 15,可以为空 (blank=True 表示表单验证时可以为空,null=True 表示数据库中该字段可以存储空值)。
(6)更新settings.py文件
python
INSTALLED_APPS = [
# ... 其他已安装的应用 ...
'myapp',
'django.contrib.auth',
'django.contrib.contenttypes',
]
AUTH_USER_MODEL = 'myapp.CustomUser'
(7)创建和应用迁移
powershell
python manage.py makemigrations
python manage.py migrate
![](https://img-blog.csdnimg.cn/direct/5929fe7dc0434a3f8daa19ac430e612a.png)
(8)创建注册和登录视图
python
from django.contrib.auth.forms import UserCreationForm#这是Django自带的一个表单类,用于创建新用户。它包含了用户名、密码和密码确认字段
from django.urls import reverse_lazy
from django.views import generic
#用户注册页面
class SignUpView(generic.CreateView):
form_class = UserCreationForm#指定使用UserCreationForm表单
#reverse_lazy是Django URL处理的一部分,reverse_lazy用于延迟计算URL直到它真正需要的时候。这里用于在用户成功注册后重定向到登录页面
success_url = reverse_lazy('login')#指定表单提交成功后重定向的URL,这里重定向到login页面。
template_name = 'registration/signup.html'#指定渲染的模板文件,这里是registration/signup.html
from django.contrib.auth.views import LoginView
class CustomLoginView(LoginView):
template_name = 'registration/login.html'
(9)创建url配置
在 myapp/urls.py 文件中定义 URL 路径:
python
from django.urls import path
from .views import SignUpView, CustomLoginView
urlpatterns = [
path('signup/', SignUpView.as_view(), name='signup'),
path('login/', CustomLoginView.as_view(), name='login'),
]
在 myproject/urls.py 文件中包含应用的 URL 路径:
python
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path('admin/', admin.site.urls),
path('accounts/', include('myapp.urls')),
]
(10)创建模板
创建模板文件夹和模板文件:
powershell
mkdir -p myapp/templates/registration
创建 myapp/templates/registration/signup.html 文件:
html
<!DOCTYPE html>
<html>
<head>
<title>Sign Up</title>
</head>
<body>
<h2>Sign Up</h2>
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Sign Up</button>
</form>
</body>
</html>
(11)运行服务器
powershell
python manage.py runserver
(12)在浏览器中访问http://127.0.0.1:8000/accounts/signup/ 进行注册,访问 http://127.0.0.1:8000/accounts/login/ 进行登录。
![](https://img-blog.csdnimg.cn/direct/25359cced998474d9f79c58238ade65c.png)