利用 django auth 模块写一个登录和注册模块
时间: 2024-03-07 11:48:42 浏览: 19
好的,下面是基于 Django auth 模块的登录和注册模块的示例代码:
## 注册模块
### 1. 创建注册页面
在 templates 目录下创建一个 register.html 文件,该文件包含一个表单,用户可以输入用户名和密码:
```html
<!DOCTYPE html>
<html>
<head>
<title>注册</title>
</head>
<body>
<h2>注册</h2>
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">注册</button>
</form>
</body>
</html>
```
### 2. 创建注册视图
在 views.py 文件中创建一个 register 视图,该视图处理用户提交的注册表单,并将新用户保存到数据库中:
```python
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, 'register.html', {'form': form})
```
在上面的代码中,我们使用 Django 自带的 UserCreationForm 表单处理用户提交的注册表单。如果表单数据有效,我们将表单数据保存到数据库中,并将用户重定向到登录页面。
## 登录模块
### 1. 创建登录页面
在 templates 目录下创建一个 login.html 文件,该文件包含一个表单,用户可以输入用户名和密码:
```html
<!DOCTYPE html>
<html>
<head>
<title>登录</title>
</head>
<body>
<h2>登录</h2>
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">登录</button>
</form>
</body>
</html>
```
### 2. 创建登录视图
在 views.py 文件中创建一个 login 视图,该视图处理用户提交的登录表单,并验证用户名和密码是否匹配:
```python
from django.shortcuts import render, redirect
from django.contrib.auth.forms import AuthenticationForm
from django.contrib.auth import authenticate, login
def login_view(request):
if request.method == 'POST':
form = AuthenticationForm(data=request.POST)
if form.is_valid():
username = form.cleaned_data.get('username')
password = form.cleaned_data.get('password')
user = authenticate(username=username, password=password)
if user is not None:
login(request, user)
return redirect('home')
else:
form = AuthenticationForm()
return render(request, 'login.html', {'form': form})
```
在上面的代码中,我们使用 Django 自带的 AuthenticationForm 表单处理用户提交的登录表单。如果表单数据有效,我们使用 authenticate 函数验证用户名和密码是否匹配。如果匹配成功,我们使用 login 函数将用户登录到系统中,并将用户重定向到网站首页。
### 3. 创建网站首页
在 urls.py 文件中创建一个网站首页的路由:
```python
from django.urls import path
from .views import register, login_view, home
urlpatterns = [
path('register/', register, name='register'),
path('login/', login_view, name='login'),
path('', home, name='home'),
]
```
在 views.py 文件中创建一个 home 视图,该视图返回网站首页的 HTML 页面:
```python
from django.shortcuts import render
def home(request):
return render(request, 'home.html')
```
在 templates 目录下创建一个 home.html 文件,该文件包含网站首页的 HTML 代码。
这就是基于 Django auth 模块的登录和注册模块的示例代码。希望对你有所帮助。