以下是使用 **HTML 和 Django** 实现邮箱注册登录功能的完整步骤和代码示例: --- ### **一、项目结构** ``` your_project/ ├── your_app/ │ ├── migrations/ │ ├── templates/ │ │ ├── register.html │ │ └── login.html │ ├── forms.py │ ├── models.py │ ├── views.py │ └── urls.py ├── settings.py └── ... ``` --- ### **二、步骤说明** --- #### **1. 自定义用户模型(可选但推荐)** 如果希望邮箱作为唯一标识,覆盖 Django 默认的 `User` 模型: **在 `your_app/models.py` 中:** ```python from django.contrib.auth.models import AbstractUser class CustomUser(AbstractUser): email = models.EmailField(unique=True) # 邮箱唯一 USERNAME_FIELD = 'email' # 设置邮箱作为登录凭证 REQUIRED_FIELDS = [] # 移除默认的 username 要求 ``` **在 `settings.py` 中指定自定义用户模型:** ```python AUTH_USER_MODEL = 'your_app.CustomUser' ``` --- #### **2. 创建表单(forms.py)** **在 `your_app/forms.py` 中:** ```python from django import forms from django.contrib.auth.forms import AuthenticationForm, UserCreationForm from .models import CustomUser # 注册表单 class RegisterForm(UserCreationForm): email = forms.EmailField(required=True, label="邮箱") class Meta: model = CustomUser fields = ("email", "password1", "password2") # 登录表单 class LoginForm(AuthenticationForm): username = forms.EmailField(required=True, label="邮箱") # 将 username 改为邮箱 password = forms.CharField(widget=forms.PasswordInput, label="密码") ``` --- #### **3. 编写视图(views.py)** **在 `your_app/views.py` 中:** ```python from django.shortcuts import render, redirect from django.contrib.auth import login, authenticate from .forms import RegisterForm, LoginForm # 注册视图 def register(request): if request.method == "POST": form = RegisterForm(request.POST) if form.is_valid(): user = form.save() # 创建用户 login(request, user) # 自动登录 return redirect("home") # 重定向到主页 else: form = RegisterForm() return render(request, "register.html", {"form": form}) # 登录视图 def user_login(request): if request.method == "POST": form = LoginForm(request, data=request.POST) if form.is_valid(): user = form.get_user() login(request, user) return redirect("home") else: form = LoginForm() return render(request, "login.html", {"form": form}) ``` --- #### **4. 配置 URL 路由(urls.py)** **在 `your_app/urls.py` 中:** ```python from django
html和django实现一个邮箱的注册登录
- 作者:China-Hubei-Wuhan
- 日期:2025年3月14日 15:03
- 浏览:16
评论区: