第4天:用户认证系统实现

第4天:用户认证系统实现

目标

实现用户认证系统,包括用户注册、登录、登出和密码管理。

任务概览
  1. 使用Django内置的用户认证系统。
  2. 创建用户注册和登录表单。
  3. 实现用户登出和密码重置功能。
详细步骤
1. 使用Django内置的用户认证系统

Django提供了一个强大的内置用户认证系统,包括用户管理、权限和组等。首先,确保在你的settings.py文件中包含了认证相关的应用:

python 复制代码
# myproject/myproject/settings.py

INSTALLED_APPS = [
    # ...
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.admin',
]
2. 创建用户注册表单

Django的auth应用提供了一个基本的UserCreationForm,你可以用它来创建用户注册表单:

python 复制代码
# myproject/myapp/forms.py

from django import forms
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.models import User

class SignUpForm(UserCreationForm):
    email = forms.EmailField(max_length=254, help_text='Required. Inform a valid email address.')

    class Meta:
        model = User
        fields = ('username', 'email', 'password1', 'password2')
3. 创建用户登录表单

Django同样提供了AuthenticationForm用于用户登录:

python 复制代码
# myproject/myapp/forms.py

from django.contrib.auth.forms import AuthenticationForm

# 如果需要自定义,可以继承AuthenticationForm并修改
4. 实现用户注册视图和模板

创建视图来处理用户注册的逻辑:

python 复制代码
# myproject/myapp/views.py

from django.shortcuts import render, redirect
from .forms import SignUpForm

def signup(request):
    if request.method == 'POST':
        form = SignUpForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect('login')  # 重定向到登录页面
    else:
        form = SignUpForm()
    return render(request, 'signup.html', {'form': form})

创建相应的模板signup.html

html 复制代码
<!-- myproject/myproject/templates/signup.html -->

{% extends 'base.html' %}

{% block content %}
  <h2>Sign up</h2>
  <form method="post">
    {% csrf_token %}
    {{ form.as_p }}
    <button type="submit">Sign up</button>
  </form>
{% endblock %}
5. 实现用户登录视图

创建登录视图:

python 复制代码
# myproject/myapp/views.py

from django.contrib.auth import authenticate, login
from django.http import HttpResponseRedirect
from .forms import AuthenticationForm

def user_login(request):
    if request.method == 'POST':
        form = AuthenticationForm(request, data=request.POST)
        if form.is_valid():
            username = form.cleaned_data.get('username')
            password = form.cleaned_data.get('password')
            user = authenticate(username=username, password=password)
            if user is not None:
                login(request, user)
                return HttpResponseRedirect('/home/')  # 重定向到首页
    else:
        form = AuthenticationForm()
    return render(request, 'login.html', {'form': form})
6. 实现用户登出功能

创建登出视图:

python 复制代码
# myproject/myapp/views.py

from django.contrib.auth import logout

def user_logout(request):
    logout(request)
    return redirect('login')  # 重定向到登录页面
7. 配置URLs

将视图函数映射到URL:

python 复制代码
# myproject/myapp/urls.py

from django.urls import path
from . import views

urlpatterns = [
    path('signup/', views.signup, name='signup'),
    path('login/', views.user_login, name='login'),
    path('logout/', views.user_logout, name='logout'),
]
学习要点
  • 理解Django内置的用户认证系统。
  • 学会创建用户注册和登录表单。
  • 掌握用户认证视图的编写和模板的创建。
每日回顾
  • 确保用户注册和登录流程正常工作。
  • 测试登出功能是否按预期工作。

通过今天的学习,你应该能够实现一个基本的用户认证系统,包括注册、登录和登出功能。明天,我们将学习如何使用Django的Admin界面来管理用户数据,并为用户模型添加自定义字段。

复制代码
相关推荐
小徐学编程-zZ4 小时前
量产测试数据
python·压力测试·数据库架构
QQ8057806514 小时前
django基于机器学习的电商评论情感分析系统设计实现
python·机器学习·django
wx09094 小时前
stata实现机器学习的环境配置
python·机器学习·stata
nuowenyadelunwen6 小时前
CS 61A Lab 2 笔记:短路求值、高阶函数与 Lambda 表达式
python·函数式编程·cs61a·berkeley
qq_422828627 小时前
android图形学之SurfaceControl和Surface的关系 五
android·开发语言·python
weixin_444012937 小时前
c++如何将std--vector直接DUMP到二进制文件_指针地址直写【附代码】
jvm·数据库·python
woxihuan1234567 小时前
Go语言中--=运算符详解:位右移赋值操作的原理与应用
jvm·数据库·python
石山代码7 小时前
Python 数据分析三大库:NumPy + Pandas + Matplotlib
python·数据分析·numpy
如竟没有火炬8 小时前
用队列实现栈
开发语言·数据结构·python·算法·leetcode·深度优先
yivifu8 小时前
CustomTkinter的布局管理器介绍及应用
python·gui·customtkinter·pdf去水印