django auth实现注册用户名 密码和确认密码 包括 用户名的唯一性验证和密码与确认密码的一致性验证以及注册后成功的提示信息
时间: 2023-08-06 08:07:04 浏览: 49
好的,下面是一个简单的 Django auth 注册模块实现:
1. 首先在 `settings.py` 中配置 `AUTH_USER_MODEL`,指定用户模型为自定义模型,例如:
```python
AUTH_USER_MODEL = 'myapp.MyUser'
```
2. 然后在 `forms.py` 中定义注册表单,包括用户名、密码和确认密码:
```python
from django import forms
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth import get_user_model
User = get_user_model()
class SignUpForm(UserCreationForm):
class Meta:
model = User
fields = ('username', 'password1', 'password2',)
```
3. 在 `views.py` 中定义注册视图函数,实现用户名唯一性验证和密码一致性验证:
```python
from django.shortcuts import render, redirect
from django.contrib.auth import login, authenticate
from .forms import SignUpForm
def signup(request):
if request.method == 'POST':
form = SignUpForm(request.POST)
if form.is_valid():
user = form.save(commit=False)
username = form.cleaned_data.get('username')
password = form.cleaned_data.get('password1')
user.set_password(password)
user.save()
login(request, user)
messages.success(request, f"欢迎 {username} 进入我们的网站!")
return redirect('home')
else:
form = SignUpForm()
return render(request, 'signup.html', {'form': form})
```
4. 最后在 `signup.html` 模板中渲染注册表单,并显示错误信息和成功提示信息:
```html
{% extends 'base.html' %}
{% block content %}
<h2>注册</h2>
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">注册</button>
</form>
{% if form.errors %}
<div class="alert alert-danger">
{% for field in form %}
{% for error in field.errors %}
<p>{{ error }}</p>
{% endfor %}
{% endfor %}
</div>
{% endif %}
{% if messages %}
<div class="alert alert-success">
<p>{{ messages }}</p>
</div>
{% endif %}
{% endblock %}
```
这样,一个包括用户名唯一性验证和密码一致性验证的 Django auth 注册模块就完成了。