1. cannot import name 'python_2_unicode_compatible'

解决方案:

#Old
from six import python_2_unicode_compatible

#New
from django.utils.encoding import python_2_unicode_compatible

2. No module named 'django.core.urlresolvers'

解决方案:

#Old
import django.core.urlresolvers

#New
from django.urls import reverse

3. AttributeError: module 'django.contrib.auth.views' has no attribute 'login'

解决方案:

#New
from django.contrib.auth.views import LoginView
path('login/', LoginView.as_view(), name='login'),

4. admin.E408 admin.E409 admin.E410

报错信息:

ERRORS:
?: (admin.E408) 'django.contrib.auth.middleware.AuthenticationMiddleware' must be in MIDDLEWARE in order to use the admin application.
?: (admin.E409) 'django.contrib.messages.middleware.MessageMiddleware' must be in MIDDLEWARE in order to use the admin application.
?: (admin.E410) 'django.contrib.sessions.middleware.SessionMiddleware' must be in MIDDLEWARE in order to use the admin application.

解决方案:

1.将 MIDDLEWARE_CLASSES 改为 MIDDLEWARE  
2.将  'django,contrib.auth.middleware.SessionAuthenticationMiddleware',  删除

5. Django 时区问题

Django项目打印时间时发现与系统时间不一样,其原因是 django 默认使用的是格林尼治时间,与北京时间差八个小时.

解决办法:
在Django的配置文件 settings.py中,有两个配置参数是跟时间与时区有关的,分别是TIME_ZONEUSE_TZ

  • 如果USE_TZ设置为True时,Django会使用系统默认设置的时区,即America/Chicago,此时的TIME_ZONE不管有没有设置都不起作用.
  • 如果USE_TZ 设置为False,而TIME_ZONE设置为None,则Django还是会使用默认的America/Chicago时间. 若TIME_ZONE设置为其它时区的话,则还要分情况,如果是Windows系统,则TIME_ZONE设置是没用的,Django会使用本机的时间. 如果为其他系统,则使用该时区的时间,如设置USE_TZ = False, TIME_ZONE = 'Asia/Shanghai', 则使用上海的UTC时间.
Last modification:February 22nd, 2022 at 11:47 am