dgango项目实现登录日志
时间: 2023-07-12 22:05:21 浏览: 48
要实现 Django 项目的登录日志,可以按照以下步骤进行:
1. 新建一个模型类,用于存储登录日志信息。例如:
```python
from django.db import models
from django.contrib.auth.models import User
class LoginLog(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
login_time = models.DateTimeField(auto_now_add=True)
ip_address = models.CharField(max_length=20)
```
2. 在登录视图中添加记录登录日志的代码。例如:
```python
from django.contrib.auth.decorators import login_required
from django.contrib.auth import authenticate, login
from django.shortcuts import render, redirect
from django.utils import timezone
from .models import LoginLog
@login_required
def profile(request):
if request.method == 'POST':
# 登录表单提交
username = request.POST['username']
password = request.POST['password']
user = authenticate(request, username=username, password=password)
if user is not None:
login(request, user)
# 记录登录日志
LoginLog.objects.create(user=user, login_time=timezone.now(), ip_address=request.META['REMOTE_ADDR'])
return redirect('profile')
else:
# 登录失败
return render(request, 'login.html', {'error_message': '用户名或密码错误'})
else:
# 显示个人资料页面
return render(request, 'profile.html')
```
3. 在管理后台中注册登录日志模型类,以便在后台管理界面中查看登录日志信息。例如:
```python
from django.contrib import admin
from .models import LoginLog
admin.site.register(LoginLog)
```
4. 在模板中显示登录日志信息。例如:
```html
{% extends 'base.html' %}
{% block content %}
<h2>登录日志</h2>
<table>
<thead>
<tr>
<th>用户名</th>
<th>登录时间</th>
<th>IP地址</th>
</tr>
</thead>
<tbody>
{% for log in login_logs %}
<tr>
<td>{{ log.user.username }}</td>
<td>{{ log.login_time }}</td>
<td>{{ log.ip_address }}</td>
</tr>
{% empty %}
<tr>
<td colspan="3">暂无登录记录</td>
</tr>
{% endfor %}
</tbody>
</table>
{% endblock %}
```
这样就可以实现 Django 项目的登录日志功能了。当用户登录成功后,会记录登录时间和 IP 地址,管理员可以在后台管理界面中查看登录日志信息。同时,也可以在模板中显示登录日志信息,以便用户自行查看。