Django用session实现用户登录
时间: 2023-09-20 16:03:36 浏览: 99
在 Django 中,我们可以使用 session 来实现用户登录。下面是一个简单的示例:
1. 首先,在 `settings.py` 文件中,配置 session 参数:
```python
SESSION_ENGINE = 'django.contrib.sessions.backends.db'
SESSION_COOKIE_NAME = 'sessionid'
SESSION_EXPIRE_AT_BROWSER_CLOSE = True
SESSION_SAVE_EVERY_REQUEST = True
```
这里使用数据库存储 session,并设置了 session 的过期时间为关闭浏览器即过期,每次请求都保存 session。
2. 在视图函数中,实现登录逻辑:
```python
from django.contrib.auth import authenticate, login
from django.shortcuts import render, redirect
def login_view(request):
if request.method == 'POST':
username = request.POST.get('username')
password = request.POST.get('password')
user = authenticate(request, username=username, password=password)
if user is not None:
login(request, user)
return redirect('home')
else:
message = '用户名或密码错误'
else:
message = ''
return render(request, 'login.html', {'message': message})
```
这里使用 `authenticate` 函数验证用户身份,如果验证通过,则使用 `login` 函数登录用户,并跳转到首页。如果验证不通过,则返回登录页面,并提示错误信息。
3. 在模板中,实现登录表单:
```html
{% if message %}
<p>{{ message }}</p>
{% endif %}
<form method="post">
{% csrf_token %}
<label for="username">用户名:</label>
<input type="text" id="username" name="username" required>
<label for="password">密码:</label>
<input type="password" id="password" name="password" required>
<button type="submit">登录</button>
</form>
```
这里使用 `POST` 方法提交用户名和密码,注意要加上 CSRF 令牌。
以上就是使用 session 实现用户登录的基本流程。
阅读全文