创建django webapp + REST API端点

nik*_*328 1 django django-rest-framework

我正在尝试使用移动应用程序创建一个网站.我分别使用Web应用程序和REST apis,但是对于这个项目,我必须将两者结合起来.

我的问题是如何将这两个项目结合起来.

Suposse我有一个User有Tasks 的模型.目前我在一个应用程序中有这些模型,例如,myRESTapp.但是现在,我希望能够编辑任务并利用Django表单,但我不打算另外调用另一个应用程序webapp并根据模型实现表单myRESTapi.考虑到应用程序的模块化,我认为这不是一个好习惯.

mas*_*oda 5

您可以在一个Django项目中拥有多个应用程序.我通常有一个主应用程序,包含主要模型和基于它的其他应用程序.

此外,如果您想在不同项目中使用应用程序,只需将它们重复使用并将它们放入单独的存储库(您可以将其添加为需求并使用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
Run Code Online (Sandbox Code Playgroud)

所以我有我的基础应用程序,其中包含模型以及在其他应用程序和API应用程序以及网站应用程序中使用的所有内容.

我来自PHP和Symfony,我真的爱上了可重用服务的想法.这就是我如何保持逻辑不受我的观点影响并且更接近实际的MVC(Django不是这样)