是否可以在Django環境之外使用Django Model和Form來運行視圖文件?在Django之外使用模型和表單?
8
A
回答
11
這是可能的。 Django非常擅長直蟒,沒有太多的魔力,所以你通常可以解耦。視圖只是函數,可以從任何其他Python代碼中調用。
要使用ORM,您必須在腳本中設置django環境。看着「manage.py」文件顯示瞭如何做到這一點:
from django.core.management import setup_environ
import settings
setup_environ(settings)
現在,你可以打電話給你想要的任何觀點:
from myapp.views import some_view
some_view(...)
請記住,該公約是視圖功能以一個HttpRequest對象作爲它們的第一個參數,並返回一個HttpResponse對象。你可以建立一個請求對象自己:
from django.http import HttpRequest
result = some_view(HttpRequest(), ...)
但如果你真的沒有興趣使用的HttpResponse或HttpRequest的對象,或許你應該只是不要讓你的方法「的意見」。也許他們是「utils」或其他東西。這些都不是由Django強制執行的,但遵循這樣的慣例是很好的形式,所以其他程序員可以閱讀你的代碼。
編輯: 2010-05-24:修正了「setup_environ」(以前錯誤地使用了「execute_manager」)。 Reference。
1
在Django的1.6,這可以簡單地通過將項目目錄的路徑進行,然後設置DJANGO_SETTINGS_MODULE環境變量,如下圖所示:
import sys
import os
sys.path.append(path_to_the_project_dir)
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'projectname.settings')
然後,你就可以開始導入您的模型。
0
在Django的1.7,你還需要做到:
import sys
import os
sys.path.append(path_to_the_project_dir)
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'projectname.settings')
import django
django.setup()
否則,你會打一個AppRegistryNotReady
例外。
相關問題
- 1. 在Django框架之外使用django模型
- 2. 使用外鍵在django模型表單中創建對象
- 3. 在Django模型表單中使用模型屬性
- 4. Django模型ManyToMany和外鍵
- 5. 如何在模型和表單構建器中使用外鍵?
- 6. 在用戶註冊之前保存django模型表單數據
- 7. 抽象模型之間的Django外鍵
- 8. MySQL和Django外鍵到用戶模型
- 9. django上傳文件(模型和表單)
- 10. Django表單模型和編輯
- 11. Django表單,字段和模型
- 12. 如何在Django-AllAuth的/ accounts/url模式之外使用註冊表單?
- 13. 在django中的表單模板之間映射外鍵
- 14. 在單個django表單中使用多個模型
- 15. django在另一個模型中定義之前使用模型
- 16. Django:在管理表單外使用ForeignKeyRawIdWidget
- 17. django模型表單錯誤
- 18. 在Django之外使用Django ORM
- 19. Django - 爲同一視圖使用多個模型和表單
- 20. Django:使用多個外鍵模型
- 21. Django外鍵和表單
- 22. 外鍵Django模型
- 23. Django模型與外鍵到兩種可能的模型之一
- 24. 如何使用django表單/模型來表示字段之間的選擇?
- 25. 在同一模板中顯示createview(模型表單)和listview - Django
- 26. 在Django中處理模型表單
- 27. 問題在Django表單模型
- 28. 在兩個Django項目之間共享模型(和表)
- 29. 使用外鍵測試django模型到另一個模型
- 30. 使用外鍵模型序列化django模型
你想使用視圖,ORM和窗體框架 - 爲什麼不只是使用所有的Django? – 2010-04-27 14:28:04
@Dominic,因爲我不想要返回HttpResponses – RadiantHex 2010-04-27 15:06:51
你想返回什麼? – Puddingfox 2010-04-27 15:23:04