您可以在一個Django項目中擁有多個應用程序。我通常有一個主要的應用程序,其中包含主要模型和附加應用程序。另外,如果您想在不同項目中使用應用程序,只需將它們設置爲reusable並將它們放入單獨的存儲庫(您可以添加爲需求並使用pip進行安裝)。
至於REST API,請查看Django Rest Framework。它提供了完整的CRUD功能,並結合脆皮形式,甚至可以使用簡單的Web UI添加/修改數據。
的我如何構造我的一個項目一個例子:
base # basic application
├── __init__.py
├── admin
│ ├── __init__.py
├── ├── filters.py # custom filters for the Django Admin
│ └── models.py # enhancements for the Django Admin
├── apps.py
├── db_router.py # database router to distinguish between default and legacy DB
├── migrations # DB migrations (default & legacy)
├── models
│ ├── __init__.py
│ └── default.py # default models
│ └── legacy.py # legacy models
├── services
│ ├── __init__.py
│ ├── service1.py
│ ├── service2.py
├── tests.py
manage.py
my_api_app
├── __init__.py
├── apps.py
├── serializers.py # DRF Serializers
├── services.py # specific services for this app
├── tests.py
├── urls.py # API URLs
├── views.py # DRF ViewSets
my_web_app
├── __init__.py
├── apps.py
├── services.py # specific services for this app
├── static
├── ├── css
├── ├── img
├── ├── js
├── templates
├── tests.py
├── urls.py # website URLs
├── views.py # web views
projectname
├── __init__.py
├── settings
├── ├── __init__.py
│ ├── base.py # base settings for all environments
│ ├── dev.py # local dev settings (DEBUG, etc)
│ ├── prod.py # production settings (default)
│ └── test.py # test settings (sqlite DBs for testing)
├── urls.py # urlpatterns (API, website & admin)
├── wsgi.py
requirements
├── base.txt # requirements for all environments
├── dev.txt # local dev requirements
├── optional.txt # optional requirements for HTML doc creation
├── prod.txt # production requirements
└── test.txt # test env requirements
requirements.txt # default requirements (prod)
scripts
├── post-merge.sh # githook for deployment on server
├── doc.sh # create the code doc
├── coverage.sh # create the code doc
所以,我有我的基礎的應用程序,包含在兩個其他應用程序所使用的模型和一切,對於API的應用程序,一個爲網站。
我來自PHP和Symfony,我真的愛上了可重用服務的想法。這就是我如何保持邏輯脫離我的觀點,並保持接近實際的MVC(這是Django不是)
我分別使用了DRF和Django。我現在想要的是在一個項目下加入(例如,智能手機'/ users/me'用於獲取用戶數據,但也可以通過網頁完成)。當我剛創建一個Web應用程序時,我使用'{{form}}'標籤自動呈現頁面上的表單。我認爲將REST部分與同一應用程序中的Web部件組合起來並不是很好,但將它們分離爲「core」,「api」和「webapp」會產生它們之間的依賴關係。有什麼建議麼? – nikolat328
@ nikolat328同意,混合應用程序不是一個好主意。將它們拆分成core,api和webapp是。我更新了答案,幷包含了一個我喜歡用於類似項目的示例項目結構。 – masterfloda