python and Django
学习Django的admin页面的配置及访问,按照http://djangobook.py3k.cn/2.0/chapter06/的方法试,一直报错
'WSGIRequest' object has no attribute 'user'
于是重新建了一个项目,重头开始,开始以为是数据库的错误,于是用默认的sqlite3,没错,在之前出错的项目上移除Mysql的配置,换成sqlite3,还是报错
继续debug,把之前项目中创建的app全部注释掉,刷新,还是报错
于是把两个项目的settings.py和urls.py对比,发现是'django.contrib.auth.middleware.AuthenticationMiddleware', 和'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 在settings.py中的前后顺序错了,修改后可以正常显示页面
不过仔细回想,似乎之前是运行127.0.0.1:8000/admin的时候,页面提示要把'django.contrib.auth.middleware.SessionAuthenticationMiddleware',放在'django.contrib.auth.middleware.AuthenticationMiddleware'之前,才修改了位置,后来才想起来,在Urls.py中需要添加admin.autodiscover(),而在之前似乎没添加这句,然后生成页面的时候会要求:'django.contrib.auth.middleware.SessionAuthenticationMiddleware',放在'django.contrib.auth.middleware.AuthenticationMiddleware'之前,但是放了之后又会出现
'WSGIRequest' object has no attribute 'user'的错误
看了其他人出现这个错误的原因也差不多都是这两个middleware没有取消注释。做个记号,切记切记
继续昨天,修改Django admin增加页面功能的话,修改指定类的变量名是指定的,不是自己命名的
如:
class AuthorAdmin(admin.ModelAdmin):
list_display = ('first_name','last_name','email')
search_fields = ('first_name','last_name')
这其中,list_display 和search_fileds都是指定的名称,如果自己改名的话,页面不会有变化