📅  最后修改于: 2023-12-03 15:14:54.747000             🧑  作者: Mango
如果你正在使用Django进行Web开发,那么创建一个账号来授权用户登录是一项必不可少的任务。在本文中,我们将介绍如何使用Django的内置身份验证系统来创建用户账号。
首先,我们需要创建一个Django项目。如果您已经拥有Django项目,请跳过这一步。
# 在终端中输入以下命令(不含引号)
mkdir myproject
cd myproject
django-admin startproject myproject .
在创建了Django项目后,我们需要创建一个Django应用来处理用户登录。下面的命令将创建一个名为“accounts”的Django应用。
# 在终端中输入以下命令(不含引号)
python manage.py startapp accounts
在创建了Django应用后,我们需要在settings.py中配置Django以包含我们的应用程序。
# settings.py
INSTALLED_APPS = [
...
# 添加应用到Django项目中
'accounts',
]
AUTH_USER_MODEL = 'accounts.User'
使用Django内置的用户模型,我们需要将其扩展以包含额外的字段。
# models.py
from django.contrib.auth.models import AbstractUser
from django.db import models
class User(AbstractUser):
phone_number = models.CharField(max_length=15)
请注意,我们添加了一个名为“phone_number”的字段来保存用户的电话号码。
为了允许用户注册新账号,我们需要创建一个注册视图和一个对应的模板。
# views.py
from django.contrib.auth import authenticate, login
from django.contrib.auth.forms import UserCreationForm
from django.shortcuts import render, redirect
def register(request):
if request.method == 'POST':
form = UserCreationForm(request.POST)
if form.is_valid():
user = form.save()
# 将用户注册到Django系统中
login(request, user)
return redirect('home')
else:
form = UserCreationForm()
return render(request, 'registration/register.html', {'form': form})
在模板文件夹中,我们需要创建一个名为“registration”的文件夹,其中包含一个名为“register.html”的模板。
<!-- register.html -->
{% extends 'base.html' %}
{% block content %}
<h2>Register</h2>
<form method="post" action="{% url 'register' %}">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Register</button>
</form>
{% endblock %}
最后,我们需要将新视图添加到Django项目的URL中。
# urls.py
from django.urls import path
from . import views
urlpatterns = [
path('register/', views.register, name='register'),
]
现在,你已经创建了一个新的Django应用程序,该应用程序允许用户注册新账号,登录到系统中并访问受保护的页面。
在本文中,我们了解了如何使用Django的内置身份验证系统来创建用户账号。我们创建了一个新的Django应用程序,拓展了用户模型以保存额外的信息,设置了Django视图和模板,并添加到了Django项目的URL中。通过这些步骤,用户可以注册新的账号,并访问受保护的页面。