步骤1:更新模型
在 helloworldapp/models.py 中,为用户创建一个模型,该模型继承自 AbstractUser,并添加一个字段 greeting:
# helloworldapp/models.py
from django.contrib.auth.models import AbstractUser
from django.db import models
class CustomUser(AbstractUser):
greeting = models.TextField(blank=True, null=True)
def __str__(self):
return self.username
步骤2:更新数据库
运行以下命令进行数据库迁移,以应用新的用户模型:
python manage.py makemigrations
python manage.py migrate
步骤3:创建用户表单
在 helloworldapp/forms.py 中,创建一个表单类用于用户注册:
# helloworldapp/forms.py
from django import forms
from django.contrib.auth.forms import UserCreationForm
from .models import CustomUser
class CustomUserCreationForm(UserCreationForm):
class Meta(UserCreationForm.Meta):
model = CustomUser
fields = UserCreationForm.Meta.fields + ('greeting',)
步骤4:更新视图
在 helloworldapp/views.py 中,更新 hello 视图函数,以便处理用户注册表单的提交:
# helloworldapp/views.py
from django.contrib.auth.decorators import login_required
from django.shortcuts import render, redirect
from .models import Greeting, CustomUser
from .forms import GreetingForm, CustomUserCreationForm
@login_required
def hello(request):
if request.method == 'POST':
form = GreetingForm(request.POST)
if form.is_valid():
message = form.cleaned_data['message']
Greeting.objects.all().delete()
Greeting.objects.create(message=message)
return redirect('hello')
else:
form = GreetingForm()
greeting = Greeting.objects.first()
return render(request, 'helloworldapp/hello.html', {'greeting': greeting, 'form': form})
def register(request):
if request.method == 'POST':
form = CustomUserCreationForm(request.POST)
if form.is_valid():
form.save()
return redirect('login')
else:
form = CustomUserCreationForm()
return render(request, 'registration/register.html', {'form': form})
步骤5:创建注册模板
在 helloworldapp/templates/registration/register.html 中,创建一个模板文件用于用户注册:
<!-- helloworldapp/templates/registration/register.html -->
{% extends 'base.html' %}
{% block content %}
<h2>Register</h2>
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Register</button>
</form>
{% endblock %}
步骤6:更新 URL 路由
在 helloworldapp/urls.py 中,添加一个 URL 路由用于注册页面:
# helloworldapp/urls.py
from django.urls import path
from .views import hello, register
urlpatterns = [
path('hello/', hello, name='hello'),
path('register/', register, name='register'),
]
步骤7:更新主 URL 路由
在 helloworldproject/urls.py 中,添加一个 URL 路由用于应用程序的主页面:
# helloworldproject/urls.py
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path('admin/', admin.site.urls),
path('helloworld/', include('helloworldapp.urls')),
path('', include('django.contrib.auth.urls')), # 使用内置的用户认证视图
]
步骤8:创建超级用户
如果你还没有创建超级用户,运行以下命令创建一个:
python manage.py createsuperuser
步骤9:运行开发服务器
确保你的开发服务器正在运行:
python manage.py runserver
现在,你可以在浏览器中访问 http://127.0.0.1:8000/helloworld/hello/ 查看主页面,或者访问 http://127.0.0.1:8000/helloworld/register/ 进行用户注册。
这样,你的 Django 应用已经包含了用户认证和注册功能。在后续学习中,你可以进一步了解 Django 的用户权限、视图装饰器等更高级的主题。
转载请注明出处:http://www.pingtaimeng.com/article/detail/7126/Django