下面是详细讲解“Django实战之用户认证(初始配置)”的完整攻略。
概述
在Django项目中,用户认证是必不可少的一步。Django提供了一套完善的用户认证系统,可以方便地实现用户的认证、注册、密码重置等功能。本文将介绍Django用户认证的初始配置过程。
准备工作
在开始之前,需要做以下准备工作:
- 安装Django:使用pip安装Django,可以输入以下命令安装最新版本:
pip install django
- 创建Django项目:使用Django命令行工具创建项目。
django-admin startproject myproject
配置用户认证
Django的用户认证系统默认是关闭的,需要手动开启。接下来我们将对Django的用户认证系统进行配置。
修改settings.py
在myproject
目录下的settings.py
文件中,找到以下配置项:
INSTALLED_APPS = [
...
# 'django.contrib.admin',
# 'django.contrib.auth',
# 'django.contrib.contenttypes',
# 'django.contrib.sessions',
# 'django.contrib.messages',
# 'django.contrib.staticfiles',
]
把django.contrib.auth
解除注释:
INSTALLED_APPS = [
...
# 'django.contrib.admin',
'django.contrib.auth',
# 'django.contrib.contenttypes',
# 'django.contrib.sessions',
# 'django.contrib.messages',
# 'django.contrib.staticfiles',
]
注: 这里我们只需要引入django.contrib.auth
这个模块。
然后,在该文件中找到MIDDLEWARE
配置项:
MIDDLEWARE = [
...
# 'django.middleware.security.SecurityMiddleware',
# 'django.contrib.sessions.middleware.SessionMiddleware',
# 'django.middleware.common.CommonMiddleware',
# 'django.middleware.csrf.CsrfViewMiddleware',
# 'django.contrib.auth.middleware.AuthenticationMiddleware',
# 'django.contrib.messages.middleware.MessageMiddleware',
# 'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
把django.contrib.auth.middleware.AuthenticationMiddleware
解除注释:
MIDDLEWARE = [
...
# 'django.middleware.security.SecurityMiddleware',
# 'django.contrib.sessions.middleware.SessionMiddleware',
# 'django.middleware.common.CommonMiddleware',
# 'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
# 'django.contrib.messages.middleware.MessageMiddleware',
# 'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
注:这里我们开启了中间件django.contrib.auth.middleware.AuthenticationMiddleware
,用于在用户认证时对请求进行检查。
创建数据库表
在配置完用户认证系统之后,我们需要创建相应的数据库表。填写以下命令:
python manage.py makemigrations
python manage.py migrate
上述命令将会创建auth
应用所需的数据表, migrate
命令将这些表迁移到数据库中。
创建超级用户
在开始用户认证之前,我们需要先创建一个超级用户,用于管理用户。
python manage.py createsuperuser
填写超级用户账号、电子邮件和密码等信息。完成后,将创建一个超级用户账号。
现在我们的用户认证系统已经配置好了,接下来我们将实现一个用户注册和登录的功能。
示例说明
下面将通过两个实例来说明用户注册和登录的功能。
示例1:用户注册
- 在myproject目录下,创建一个新的应用(app):
python manage.py startapp user
- 在
user
应用主目录下创建urls.py
文件用于url映射,添加以下内容:
```
from django.urls import path
from . import views
urlpatterns = [
path('register/', views.register),
]
```
- 在
user
应用主目录下创建views.py
文件,添加以下代码:
```
from django.shortcuts import render, redirect
from django.contrib.auth.forms import UserCreationForm
from django.contrib import messages
def register(request):
if request.method == 'POST':
form = UserCreationForm(request.POST)
if form.is_valid():
form.save()
username = form.cleaned_data.get('username')
messages.success(request, f'Account created for {username}!')
return redirect('home')
else:
form = UserCreationForm()
return render(request, 'register.html', {'form': form})
```
- 创建 register.html, 添加以下内容:
```
{% extends 'base.html' %}
{% block content %}
Register Here
{% endblock %}
```
- 在myproject目录下的
urls.py
文件中,添加注册的URL映射:
```
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('user.urls')),
]
```
- 运行服务器:
python manage.py runserver
打开浏览器并输入 http://127.0.0.1:8000/register/ ,打开注册页面,填写用户名和密码,点击注册按钮即可完成注册。注册完成后会返回到主页。
示例2:用户登录
先在之前的user
应用主目录下创建urls.py
,添加以下内容:
from django.urls import path
from . import views
urlpatterns = [
path('login/', views.login),
]
在views.py
文件中添加以下代码:
from django.shortcuts import render, redirect
from django.contrib.auth import authenticate, login
from django.contrib import messages
def login(request):
if request.method == 'POST':
username = request.POST.get('username')
password = request.POST.get('password')
user = authenticate(request, username=username, password=password)
if user is not None:
login(request, user)
return redirect('home')
else:
messages.info(request, 'Invalid credentials')
return render(request, 'login.html')
然后是登录的HTML模板, 在user
应用主目录下创建login.html
文件,添加以下内容:
{% extends 'base.html' %}
{% block content %}
<h2>Login Here</h2>
<form method="post">
{% csrf_token %}
<label for="username">Username:</label>
<input type="text" id="username" name="username">
<label for="password">Password:</label>
<input type="password" id="password" name="password">
<button type="submit">Login</button>
</form>
{% endblock %}
接下来在myproject
应用主目录下的urls.py
文件中,添加登录URL的映射:
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('user.urls')),
path('login/', include('user.urls')),
]
运行服务器:
python manage.py runserver
打开浏览器并输入 http://127.0.0.1:8000/login/ ,打开登录页面,填写之前注册的用户名和密码,点击登录按钮即可完成登录。登录完成后会返回到主页。
以上就是Django用户认证(初始配置)的完整攻略,同时这包含了两条示例说明。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Django实战之用户认证(初始配置) - Python技术站