1

我有一個在Google App Engine上運行的django應用程序。我使用djangoappenginedjango-nonrel,它工作正常(在我的App Engine項目目錄中有完整的django源代碼)。 我注意到GAE通過添加以下行app.yaml提供了Django的支持:使用GAE版本的django

libraries: 
- name: django 
    version: 1.5 

我想用它而不是把整個Django的nonrel源代碼在我的項目目錄。 當我從我的項目目錄中刪除Django的nonrel,我從djangoappengine/boot.py得到下面的導入錯誤:

ImportError: No module named django.conf 

它看起來像djangoappengine找不到Django的任何版本 - 而不是一個安裝在我的蟒蛇安裝,不是AppEngine自帶的。

我該如何讓開發服務器使用AppEngine版本的django? 或者我錯過了什麼?

更新: 當我手動編輯djangoappengine/boot.py並添加

sys.path.append(r'<PATH TO GAE API>/google_appengine/lib/django-1.5') 

它的工作原理。任何方式添加到路徑而不編輯djangoappengine

+0

您還需要在適當的模塊中導入django。 –

+0

感謝@AshishNitinPatil的回覆。 「適當的模塊」是什麼意思?不會'import django'引發與'import django.conf'相同的'ImportError'引發? – Tzach

+0

不是。我認爲,'app.yaml'指示服務器將'django'作爲服務器的外部庫。因此,'import django'不會失敗。 (雖然我可能錯了) –

回答

0

GAE SDK附帶的Django模塊是「常規」Django,而不是django-nonrel。 「常規」Django只能處理SQL數據庫,它不能處理GAE的數據存儲。

如果您使用CloudSQL,請使用「常規」Django。如果您使用HRD數據存儲,請使用django-nonrel。

你看到的錯誤是因爲djangoappengine(和djangotoolbox)只能與django-nonrel一起使用。他們不會使用「常規」django。

+0

謝謝。只是澄清 - 如果直接使用GAE模型(db和ndb),也可以使用'常規'django。 – Tzach

+0

是的。但很難想出一個很好的理由來做到這一點,因爲許多內置函數,比如窗體,大部分contrib庫以及大多數第三方插件都無法工作。在這種情況下,你可能更適合使用webapp2 + jinja。 – dragonx

+0

我這樣做的理由是我需要非常優化的Data Store查詢,這很難或者根本無法用Data Store查詢的django-nonrel包裝來實現。對於正常使用,我完全同意。 – Tzach