2009-11-11 113 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