2017-08-08 95 views
1

我正在嘗試使用移動應用程序創建網站。我曾與Web應用程序和REST apis分開工作,但對於這個項目,我必須將兩者結合起來。創建django webapp + REST API端點

我的問題是我該如何組合項目的這兩個方面。

Suposse我有一個User模型,它有Task s。目前,我在一個名爲「myRESTapp」的應用中使用這些模型。但是現在,我希望能夠編輯這些任務並利用Django表單,但是我不會再執行另一個名爲webapp的應用程序,並根據myRESTapi中的模型實施表單。考慮到應用程序的模塊化,我認爲這不是一個好的做法。

回答

2

您可以在一個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不是)

+0

我分別使用了DRF和Django。我現在想要的是在一個項目下加入(例如,智能手機'/ users/me'用於獲取用戶數據,但也可以通過網頁完成)。當我剛創建一個Web應用程序時,我使用'{{form}}'標籤自動呈現頁面上的表單。我認爲將REST部分與同一應用程序中的Web部件組合起來並不是很好,但將它們分離爲「core」,「api」和「webapp」會產生它們之間的依賴關係。有什麼建議麼? – nikolat328

+0

@ nikolat328同意,混合應用程序不是一個好主意。將它們拆分成core,api和webapp是。我更新了答案,幷包含了一個我喜歡用於類似項目的示例項目結構。 – masterfloda