问题
进入admin界面时,提示
首先排查settings中INSTALLED_APPS段是否包含了'django.contrib.admin',然后再看TEMPLATE_LOADERS
TEMPLATE_LOADERS = (
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
)
配置是正常的,继续看页面的报错信息
居然是页面文件没找到,我可是用pip装的,cd到目录下一看,果然没有django/contrib/admin/templates文件夹,到stackoverflow上搜索后发现,使用虚拟环境virtuallen是可能发生这个问题的,我现在使用的是pyenv,也是虚拟环境,看来就是这个问题了,同时也说了解决办法,安装目录其他路径是有这些文件的,找到copy过去就可以了
解决办法
在安装django的目录下查找admin文件名,懒得去找目录了,直接全盘搜索
找到admin文件夹,发现里面3个文件夹,django/contrib/admin中都没有,看来虚拟环境下路径识别还是不好,讲将这3个文件夹复制过去后,OK,问题解决。
root@iZ2ze1lsoerlt75gu9joguZ:~/.pyenv/versions/2.6.6/django/contrib/admin# ls
locale static templates
后记
在做多语言的时候,发现本地测试没问题,服务器上却总是切换不成功,无奈只要顺着源码一步步找,看到最后是在这里失败了,在查找django/conf/locale/下的语言包时失败,这个不是django包自带的吗,竟然出错,打开自己的windows看了一下,这个Pythonhome/lib/site-packages/django/conf/locale下大改有几十个语言包,但是服务器上没有这个文件夹,有点懵逼。。。
后来联想到这个admin的问题,于是打开pyenv的目录看一下
:~ .pyenv/versions/2.6.6# ls
bin django include lib share
这里的一个django目录下有几个子目录,有conf/locale/和语言包,于是将这个django拷贝到lib/python2.6/site-packages/django下合并,问题解决了。
不明白的是,为什么pyenv安装的目录结构会是这样,还是有其他用意。