django - 创建 django webapp + REST API 端点

标签 django django-rest-framework

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

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

假设我有一个 User 模型,它有 Task。目前,我在一个名为 myRESTapp 的应用程序中拥有这些模型。但是现在,我希望能够编辑任务并利用 Django 表单,但我不想做另一个名为 webapp 的应用程序并根据 myRESTapi 中的模型实现表单。考虑到应用程序的模块化,我认为这不是一个好的做法。

最佳答案

您可以在一个 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 所没有的)

关于django - 创建 django webapp + REST API 端点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45578517/

相关文章:

Django 排除模型发送信号

django-rest-framework - Django 使用 Allauth 进行休息验证

django - 从 django-rest 在 flutter 应用程序中获取正确的数据

python - 如何围绕现有产品构建测试套件?

python - 通过 django 中的空 JsonField 查询

django - 在 Django 中为多个 SQS 消费者启用锁定机制的常见做法是什么,这样我就可以实现幂等

python - Django 意外的 405 响应

json - 是否可以在 django-rest-framework 序列化程序中动态更改字段名称?

python - DRF - 使用直通模型进行 m2m 字段的嵌套序列化

javascript - 将音频从浏览器保存到后端(Django)