2009-11-11 105 views
6

我运行的Django开发版本,它看来,filebrowser应用程序是不是因为CSRF所做的更改与躯干兼容。我如何降级到正式版本(1.1)?如何从开发降级的Django 1.1

我是一个共享的主机和我curently运行的Django的方式对工作如下:

~/local/lib/python2.6/site-packages/包含/django/以及其他几个文件夹(每个应用程序)。

~/local/lib/python2.6/site-packages/是Python路径上。

/site-packages/之内还有一个包含项目文件(manage.py,settings.py等)的符号链接/projectname/

我正在使用FastCGI,因此在/public_html/我有一个dispatch.fcgi用于呼叫django.core.servers.fastcgi.runfastcgi。使用.htaccess文件将所有请求重定向到dispatch.fcgi,以便Django可以处理它们。

我试着删除(移出python路径)/django/,然后下载Django的发布版本并将其放在之前的/django/文件夹所在的位置。这将产生以下错误:

No module named CSRF.

我从网上下载/trunk/middleware/csrf.py该清理的第一个错误,但再产生其他错误。

我应该如何去降级到1.1吗?从头开始不是不可能的,但如果可能的话,我显然宁愿避免这种情况。

回答

1

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

django-admin.py在1.1.1 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', 
) 
8

看着你/site-packages/目录Django-1.other_stuff.egg-info文件并删除任何你找到,然后再试一次(与1.1仍处于site-packages/django/目录中的代码。如果这不起作用,只是重新运行从最新的Django的安装程序发行tar包中的鸡蛋信息(蟒蛇setup.py安装),你应该是好的。

或者,如果你有pip installed你可能只是做pip install -U Django==1.1.1终端。

注资本DDjango文件和点命令。

+0

使用Python的setup.py安装出了问题的不幸,因为我没有足够的权限来编辑/ usr /中的任何东西(我只能修改/ home/username/ – 2009-11-12 00:14:52

+0

我忘记了补充:没有.egg文件 – 2009-11-12 00:16:35

+0

Django的哪个版本创建了该项目?使用trunk创建项目,假设你没有太多,重新开始使用1.1。默认的settings.py(特别是加载那些新的CSRF中间件)的更改不适用于旧版本的Dj安戈。 另外,您应该考虑在主机上使用virtualenvs(http://pypi.python.org/pypi/virtualenv)来隔离并更好地控制您的环境。 – 2009-11-12 01:59:07

1

你可以只安装你在你的用户空间所需版本的Django,说在/ home /我的/ lib目录/

那么,如果你在你的mysite使用mod_wsgi的。wsgi有一行:

sys.path.insert(0,'/home/me/lib/Django-1.1') 

这将确保django从您的安装,而不是服务器范围内加载。

您还需要使正确的django-admin.py启动调整你的shell环境路径变量,或直接运行

python /home/me/lib/Django-1.1/django/bin/django-admin.py ... 
+0

这是一个出色的“两全其美”,使我可以使用最新的Django获取支持它的应用程序,而不会破坏那些尚未更新的应用程序。 – Lake 2013-12-13 09:28:50