写一段长的auth.py代码示例
时间: 2024-02-23 12:01:44 浏览: 66
好的,以下是一个比较完整的auth.py代码示例:
```python
from django.contrib.auth import authenticate, login, logout
from django.contrib.auth.decorators import login_required
from django.contrib.auth.forms import AuthenticationForm, UserCreationForm
from django.contrib.auth.models import User
from django.shortcuts import render, redirect
def login_view(request):
if request.method == 'POST':
form = AuthenticationForm(request, 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})
def logout_view(request):
logout(request)
return redirect('login')
def register_view(request):
if request.method == 'POST':
form = UserCreationForm(request.POST)
if form.is_valid():
form.save()
username = form.cleaned_data.get('username')
password = form.cleaned_data.get('password1')
user = authenticate(username=username, password=password)
login(request, user)
return redirect('home')
else:
form = UserCreationForm()
return render(request, 'register.html', {'form': form})
@login_required
def home_view(request):
return render(request, 'home.html')
```
这段代码包含了用户认证、登录、注销和注册等功能的实现。其中,`login_view()`函数实现了用户登录功能,`logout_view()`函数实现了用户注销功能,`register_view()`函数实现了用户注册功能,`home_view()`函数则是一个简单的登录后页面。
需要注意的是,在这个示例中,我们使用了Django内置的认证表单`AuthenticationForm`和用户创建表单`UserCreationForm`,这些表单类提供了一些基本的验证和字段,可以方便地实现用户认证和注册功能。另外,我们还使用了`@login_required`装饰器来限制只有登录后才能访问的页面。
阅读全文