Django 学习笔记(4)

Django 开发中常遇到的问题汇总

1.django1.9启动后出现 ‘WSGIRequest’ object has no attribute ‘user’

以前在使用django1.9的时候一直很顺畅,今天再安装完django1.9的版本后,进入admin后台的时候,发现报了 ‘WSGIRequest’ object has no attribute ‘user’ 以为是sqlite3的问题,没有将user表迁移进去,使用migrate命令后发现没有changes。

解决办法:django1.9之前,在settings.py 中 中间件部分的 列表是MIDDLEWARE, 在1.9之后 MIDDLRWARE 改成了 MIDDLEWARE_CLASSES 即可

错误截图

2.django 部署问题

Database returned an invalid value in QuerySet.datetimes(). Are time zone definitions for your database and pytz installed?

解决方法:

  • 确定是否安装了pytz
1
$ sudo pip install pytz
  • 确定数据库的时区是否正确
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
> show variables like "%time_zone%";
+------------------+--------+
| Variable_name | Value |
+------------------+--------+
| system_time_zone | CST |
| time_zone | SYSTEM |
+------------------+--------+

# 方法1
> set global time_zone = '+8:00'; ##修改mysql全局时区为北京时间,即我们所在的东8区
> set time_zone = '+8:00'; ##修改当前会话时区
> flush privileges; #立即生效

# 方法2
$ sudo vim /etc/my.cnf
[mysqld]
default-time_zone='+8:00'
# 重启mysqld即可

mysql> show variables like "%time_zone%";
+------------------+--------+
| Variable_name | Value |
+------------------+--------+
| system_time_zone | CST |
| time_zone | +08:00 |
+------------------+--------+
  • 关闭settings.py里面的 USE_TZ
1
USE_TZ = False