创建django webapp + REST API端点

时间:2017-08-08 21:47:23

标签: django django-rest-framework

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

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

Suposse我的x %>% group_by(concat) %>% summarize(id = paste(id, collapse = ";"), super = unique(super), category = unique(category), root = unique(root), coldefs = paste(coldefs, collapse = ";")) 模型有User个。目前我在应用程序中有这些模型,例如,Task。但是现在,我希望能够编辑任务并利用Django表单,但我不是要做另一个名为myRESTapp的应用程序,而是根据webapp中的模型实现表单。考虑到应用程序的模块化,我认为这不是一个好习惯。

1 个答案:

答案 0 :(得分:5)

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