下面是详细的“Django自带用户认证系统使用方法解析”攻略:
1. Django自带用户认证系统
Django自带了一个完整的用户认证系统,包括用户登陆/注册、重置密码、发送邮件等常用功能。通过这个系统,你可以轻松地管理你网站的用户。
2. 使用步骤
2.1 安装Django
首先,我们需要安装Django。可以通过pip install django来安装最新版本的Django。
pip install django
2.2 创建Django项目
打开命令行,进入到你想要创建项目的目录,然后输入以下命令创建一个Django项目:
django-admin startproject projectname
注:projectname指的是你的项目名,可以视情况而定。
2.3 创建Django应用
在Django项目中,应用负责实现特定的功能。我们需要创建一个应用来实现用户认证系统。打开命令行,进入到Django项目目录,然后输入以下命令创建一个应用:
python manage.py startapp authapp
注:authapp指的是认证应用的名字,可以自定义。
2.4 修改Django配置文件
在你的Django项目中,打开settings.py文件,然后加入以下配置信息:
INSTALLED_APPS = [
# ... 其他应用
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'authapp',
]
MIDDLEWARE = [
# ... 其他中间件
'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
]
AUTHENTICATION_BACKENDS = [
'django.contrib.auth.backends.ModelBackend',
]
LOGIN_URL = '/login/'
2.5 创建Django视图
在认证应用中,创建一个views.py文件,然后添加以下代码:
from django.shortcuts import render
from django.contrib.auth.decorators import login_required
# Create your views here.
def index(request):
return render(request, 'index.html')
@login_required
def profile(request):
return render(request, 'profile.html')
注:index和profile分别是主页和个人资料页的视图函数,需要在后面的url中进行映射。
2.6 创建Django模板
在认证应用中,创建一个templates文件夹,在这个文件夹中,创建一个名为index.html和profile.html的模板文件,然后添加以下代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>{{ title }}</title>
</head>
<body>
<h1>{{ title }}</h1>
{% if user.is_authenticated %}
<p>Welcome, {{ user.username }}!</p>
<p><a href="{% url 'profile' %}">My profile</a></p>
{% else %}
<p><a href="{% url 'login' %}">Log in</a></p>
{% endif %}
</body>
</html>
注:{{ title }}是通用的标题变量,user.is_authenticated表示用户是否登录,{% url 'profile' %}是使用Django的反向解析来生成url。
2.7 创建Django URL模式
在认证应用中,创建一个urls.py文件,然后添加以下代码:
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
path('profile/', views.profile, name='profile'),
]
注:urlpatterns中定义了两个URL模式,分别是首页和个人资料页的模式。
2.8 运行Django应用
现在,我们已经完成了Django自带用户认证系统的各项设置,运行你的Django应用,然后在浏览器中访问http://localhost:8000/,就可以看到自己的主页和个人资料页了。如果未登录,可以点击登录链接进入登录页面进行登录。
3. 示例说明
下面,我们通过两个示例来进一步了解Django自带用户认证系统的使用方法。
3.1 示例一:用户注册
我们需要在认证应用中添加一个注册的视图函数。打开认证应用的views.py文件,添加以下代码:
from django.shortcuts import render, redirect
from django.contrib.auth.forms import UserCreationForm
def register(request):
if request.method == 'POST':
form = UserCreationForm(request.POST)
if form.is_valid():
form.save()
return redirect('login')
else:
form = UserCreationForm()
return render(request, 'registration/register.html', {'form': form})
然后,在认证应用的templates文件夹中创建一个名为register.html的模板文件,添加以下代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>User Registration</title>
</head>
<body>
<h1>User Registration</h1>
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Register</button>
</form>
</body>
</html>
接下来,在认证应用的urls.py文件中添加以下代码:
from django.urls import path
from . import views
from django.contrib.auth import views as auth_views
urlpatterns = [
path('', views.index, name='index'),
path('profile/', views.profile, name='profile'),
path('register/', views.register, name='register'),
path('login/', auth_views.LoginView.as_view(template_name='registration/login.html'), name='login'),
path('logout/', auth_views.LogoutView.as_view(template_name='registration/logout.html'), name='logout'),
]
在Django中,用户登录/注销的逻辑已经内置,我们可以使用auth_views下的LoginView和LogoutView类来实现相关功能。
最后,启动Django应用,访问http://localhost:8000/register/,就可以看到用户注册页面了。
3.2 示例二:用户权限管理
通过Django自带的用户认证系统,我们可以轻松地管理网站的用户权限。
我们需要在认证应用中创建一个名为groups的视图函数。打开认证应用的views.py文件,添加以下代码:
from django.shortcuts import render
from django.contrib.auth.decorators import login_required, permission_required
from django.contrib.auth.models import Group, User
@login_required
@permission_required('auth.view_group')
def groups(request):
groups = Group.objects.all()
return render(request, 'groups.html', {'groups': groups})
这里使用了@login_required和@permission_required两个装饰器来控制用户的权限,只有拥有auth.view_group权限的用户才能访问groups页面。
然后,在认证应用的templates文件夹中创建一个名为groups.html的模板文件,添加以下代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>User Groups</title>
</head>
<body>
<h1>User Groups</h1>
<ul>
{% for group in groups %}
<li>{{ group.name }} ({{ group.user_set.count }} users)</li>
{% endfor %}
</ul>
</body>
</html>
最后,在认证应用的urls.py文件中添加以下代码:
from django.urls import path
from . import views
from django.contrib.auth import views as auth_views
urlpatterns = [
path('', views.index, name='index'),
path('profile/', views.profile, name='profile'),
path('register/', views.register, name='register'),
path('groups/', views.groups, name='groups'),
path('login/', auth_views.LoginView.as_view(template_name='registration/login.html'), name='login'),
path('logout/', auth_views.LogoutView.as_view(template_name='registration/logout.html'), name='logout'),
]
启动Django应用,访问http://localhost:8000/groups/,就可以看到用户分组页面了。
4. 结论
经过我们的详细讲解,相信你已经掌握了Django自带用户认证系统的使用方法,并且可以根据不同的需求添加相应的功能。希望这篇攻略对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Django自带用户认证系统使用方法解析 - Python技术站