我正在运行Django的开发版本,并且由于对CSRF所做的更改,文件浏览器应用程序似乎与trunk不兼容。我如何降级到正式版(1.1)?
我正在共享主机上工作,而我正在运行Django的方式如下:
~/local/lib/python2.6/site-packages/
包含/django/
以及其他几个文件夹(每个应用一个)。
~/local/lib/python2.6/site-packages/
位于python路径上。
在/site-packages/
内还有一个/projectname/
的符号链接,其中包含项目文件(manage.py,settings.py等)。
我正在使用FastCGI,因此在/public_html/
我有dispatch.fcgi
用于呼叫django.core.servers.fastcgi.runfastcgi
。 .htaccess
文件用于将所有请求重定向到dispatch.fcgi,以便Django可以处理它们。
我尝试删除(移出python路径)/django/
,然后下载Django的发行版并将其放在上一个/django/
文件夹所在的位置。这产生了以下错误:
没有名为CSRF的模块。
我从middleware/csrf.py
下载了/trunk/
,清除了第一个错误,但后来又产生了其他错误。
我应该如何降级到1.1?从头开始并不是不可能的,但如果可能的话,我显然宁愿避免这种情况。
答案 0 :(得分:8)
在/site-packages/
目录中查找Django-1.other_stuff.egg-info
个文件并删除您找到的任何文件,然后再试一次(1.1的代码仍然在site-packages/django/
目录中。如果这不起作用,只需从最新发布的tarball(python setup.py install)重新运行Django安装程序,你应该很好。
或者,如果您有pip installed,则可以在终端中执行pip install -U Django==1.1.1
。
请注意那些egg-info文件和pip命令中D
中的大写Django
。
答案 1 :(得分:1)
我成功地降级了,这实际上是一个非常简单的过程。希望这能帮助那些忽视我所做的人。
1.1.1中django-admin.py的startproject
命令创建了一个与当前开发版本略有不同的settings.py文件。
startproject
有一个额外的中间件类--csrf。 1.1.1中的startproject命令创建相同的settings.py但删除了第三个类。注释掉或删除此行可以使Django正常工作。
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware', #additional middleware class
'django.contrib.auth.middleware.AuthenticationMiddleware',
)
答案 2 :(得分:1)
你可以在你的用户空间安装你想要的版本的django,比如/ home / me / lib /
然后如果你在你的mysite.wsgi中使用mod_wsgi有一行:
sys.path.insert(0,'/home/me/lib/Django-1.1')
这将确保从您的安装加载django,而不是服务器范围。
您还需要调整shell环境路径变量,以便正确启动django-admin.py或直接运行
python /home/me/lib/Django-1.1/django/bin/django-admin.py ...