6

我正在运行 Django 的开发版本,由于对 CSRF 所做的更改,文件浏览器应用程序似乎与主干不兼容。如何降级到正式版(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?从头开始并不是不可能的,但如果可能的话,我显然宁愿避免这种情况。

4

3 回答 3

8

在您的/site-packages/目录中查找Django-1.other_stuff.egg-info文件并删除您找到的任何文件,然后重试(1.1 的代码仍在site-packages/django/目录中。如果这不起作用,只需从最新版本的 tarball 重新运行 Django 安装程序(python setup.py安装),你应该很好。

或者,如果您安装了pip ,您可能只需要pip install -U Django==1.1.1在终端中进行操作即可。

注意这些 egg-info 文件和 pip 命令中D的大写字母。Django

于 2009-11-11T23:58:12.860 回答
1

我已经成功降级,这实际上是一个非常简单的过程。希望这会帮助那些忽视我所做的事情的人。

1.1.1 中的startprojectdjango-admin.py 命令创建的 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',
)
于 2009-11-12T08:35:37.997 回答
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 ...
于 2009-11-16T02:12:27.637 回答