Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将Django从dev降级到1.1_Django_Downgrade - Fatal编程技术网

如何将Django从dev降级到1.1

如何将Django从dev降级到1.1,django,downgrade,Django,Downgrade,我正在运行Django的开发版本,由于对CSRF进行了更改,filebrowser应用程序似乎与trunk不兼容。如何降级到官方版本(1.1) 我正在使用共享主机,目前运行Django的方式如下: ~/local/lib/python2.6/site packages/包含/django/以及几个其他文件夹(每个应用程序一个) ~/local/lib/python2.6/site packages/位于python路径上 在/site packages/中还有一个指向/projectname/的

我正在运行Django的开发版本,由于对CSRF进行了更改,filebrowser应用程序似乎与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\u html/
中,我有一个
dispatch.fcgi
,用于调用
django.core.servers.FastCGI.runfastcgi
。使用
.htaccess
文件将所有请求重定向到dispatch.fcgi,以便Django能够处理它们

我尝试删除(移出python路径)
/django/
,然后下载django的发行版,并将其放在先前的
/django/
文件夹中。这产生了以下错误:

没有名为CSRF的模块

我从
/trunk/
下载了
中间件/csrf.py
,它清除了第一个错误,但随后产生了其他错误


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

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

或者,如果有,您可以在终端中执行
pip安装-U Django==1.1.1


请注意
Django
中的大写字母
D
以及那些egg信息文件和pip命令。

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

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',
)

您只需在用户空间中安装所需版本的django,比如在/home/me/lib中/

然后,如果您在mysite.wsgi中使用mod_wsgi,那么有一行代码:

sys.path.insert(0,'/home/me/lib/Django-1.1')
这将确保django是从您的安装中加载的,而不是从服务器范围加载的

您还需要调整shell环境path变量,以便启动或直接运行正确的django-admin.py

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

不幸的是,使用python setup.py安装是不可能的,因为我没有足够的权限编辑/usr/中的任何内容(我只能修改/home/username/I忘记添加:也没有.egg文件。您使用哪个版本的Django创建项目?如果您使用trunk创建项目,请使用1.1重新开始,前提是您没有做得太多。default settings.py有更改(特别是加载那些新的CSRF中间件)对于旧版本的Django,这将不起作用。在单独的注释中,您应该考虑使用主机()为了隔离和更好地控制您的环境。第一:我刚刚安装了一个
pip-u django=1.1.3
,没有大写字母D,它工作得很好,因此,虽然其他地方可能需要它,但它不在
pip
的情况下。--第二:我意外地将django升级到1.5.1,因为
pip
将它视为对其他东西的依赖正在安装。但是,此主机上的一个应用程序尚未从1.1迁移,因此它按预期中断。快速的
pip安装-U django=1.1.3
,它已恢复工作状态。我现在对
pip
印象深刻。这是一个极好的“两全其美”,使我能够将最新的Django用于支持它的应用程序,而不会破坏那些尚未更新的应用程序。