一.问题重现
首先在models.py中创建一个记录来访者的模型
class AccessLog(models.Model):
a_ip = models.CharField(max_length=16)
a_time = models.DateTimeField(auto_now=True)
有来访者IP和访问时间
然后在views.py中写两个视图函数
def add_log(request):
log = AccessLog()
log.a_ip = "192.168.1.%d" % random.randint(1, 100)
log.save()
return HttpResponse("%s 添加成功" % log.a_ip)
def select_log(request):
# users = AccessLog.objects.all()
context = {
"users": users,
}
return render(request, "logselect.html", context)
一个用来产生访问日志,一个用来查看访问日志。
模板logselect.html如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Select Result</title>
</head>
<body>
<table>
<tr>
<th>a_ip</th>
<th>a_time</th>
</tr>
{% for user in users %}
<tr>
<td>{{user.a_ip}}</td>
<td>{{user.a_time}}</td>
</tr>
{% endfor %}
</table>
</body>
</html>
然后启动服务器。。。
看起来没有什么问题,接下来做一些修改
def select_log(request):
# users = AccessLog.objects.all()
users = AccessLog.objects.filter(a_time__month=1)
context = {
"users": users,
}
return render(request, "logselect.html", context)
增加删选条件为月份为1月的;那么应该只有一条记录被筛出来才对。
结果是一条记录都没有!!!
二.原因 && 解决方法
由于Django自带一套时区与数据库时区不一致所致。
两种解决方法:
1.修改数据库时区设置
2.修改Django时区设置
这里我选择第二种方法;比较好改
只要打开项目配置文件setting.py
将USE_TZ修改为False即可!
USE_TZ = False
等服务器自动重启后刷新网页。。。
OK!