下面是详细讲解“Django Auth应用实现用户身份认证”的完整攻略。
1. 安装 Django Auth
首先,需要安装 Django Auth 库。可以使用 pip 命令进行安装:
pip install django-auth
2. 创建用户模型
在 models.py 中定义一个 User 模型,用于保存用户的基本信息。这个模型需要继承 Django 内置的 User 模型,如下所示:
from django.contrib.auth.models import User
class MyUser(User):
pass
这样就创建了一个自定义的用户模型,在数据库中会生成一个名为 auth_user_myuser 的表格。
3. 配置数据库
在 settings.py 文件中,需要添加 AUTH_USER_MODEL 指向自定义的用户模型:
AUTH_USER_MODEL = 'myapp.MyUser'
同时,要在 INSTALLED_APPS 列表中加入 auth 应用:
INSTALLED_APPS = [
# ...
'django.contrib.auth',
# ...
]
4. 创建用户注册页面
在 views.py 中创建一个注册页面的视图函数:
from django.contrib.auth.forms import UserCreationForm
from django.views.generic.edit import CreateView
class RegisterView(CreateView):
form_class = UserCreationForm
template_name = 'registration/register.html'
success_url = '/'
在 template 目录中新建一个 registration 文件夹,并创建一个名为 register.html 的模板文件。在该模板文件中添加表单元素:
{% extends 'base.html' %}
{% block content %}
<h1>Register</h1>
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Register</button>
</form>
{% endblock %}
5. 添加登录和注销视图
在 views.py 中创建登录和注销视图:
from django.contrib.auth.views import LoginView, LogoutView
class MyLoginView(LoginView):
template_name = 'registration/login.html'
class MyLogoutView(LogoutView):
template_name = 'registration/logged_out.html'
在 template 目录中新建一个名为 registration 的文件夹,并在其中创建 login.html 和 logged_out.html 两个模板文件:
<!-- login.html -->
{% extends 'base.html' %}
{% block content %}
<h1>Login</h1>
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Login</button>
</form>
{% endblock %}
<!-- logged_out.html -->
{% extends 'base.html' %}
{% block content %}
<h1>Logged out Successfully</h1>
{% endblock %}
6. 设置 URL
在 urls.py 文件中,设置登录、注销和注册页面的 URL 路径:
from django.urls import path
from .views import RegisterView, MyLoginView, MyLogoutView
urlpatterns = [
path('login/', MyLoginView.as_view(), name='login'),
path('logout/', MyLogoutView.as_view(), name='logout'),
path('register/', RegisterView.as_view(), name='register'),
]
示例1
用户在浏览器输入 http://localhost:8000/register/,便会跳转到注册页面。用户在此页面填写注册信息(用户名、邮箱、密码等),然后点击 Register 按钮。处理程序验证注册信息是否正确并保存用户信息。如果保存成功,则返回一个登录页面。
示例2
用户在浏览器输入 http://localhost:8000/login/,便会跳转到登录页面。用户在此页面输入邮箱和密码,然后点击 Login 按钮。如果输入正确,便会进入登录状态,如果输入错误,则会提示错误信息。用户可以在成功登录后浏览网站,也可以点击网站的注销按钮进行注销。
以上就是 Django Auth 应用实现用户身份认证的完整攻略,希望可以对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Django Auth应用实现用户身份认证 - Python技术站