创建django webapp+;RESTAPI端点
我正在尝试创建一个带有移动应用程序的网站。我分别使用web应用程序和REST API,但在这个项目中,我必须将两者结合起来 我的问题是,我必须如何将项目的这两个方面结合起来创建django webapp+;RESTAPI端点,django,django-rest-framework,Django,Django Rest Framework,我正在尝试创建一个带有移动应用程序的网站。我分别使用web应用程序和REST API,但在这个项目中,我必须将两者结合起来 我的问题是,我必须如何将项目的这两个方面结合起来 Suposse我有一个用户模型,它有任务s。目前,我在一个名为myRESTapp的应用程序中有这些模型。但是现在,我希望能够编辑任务并利用Django表单,但我不想做另一个名为webapp的应用程序,并基于myRESTapi中的模型实现表单。考虑到应用程序的模块化,我认为这不是一个好做法。在一个Django项目中可以有多个应
Suposse我有一个
用户
模型,它有任务
s。目前,我在一个名为myRESTapp的应用程序中有这些模型。但是现在,我希望能够编辑任务并利用Django表单,但我不想做另一个名为webapp
的应用程序,并基于myRESTapi
中的模型实现表单。考虑到应用程序的模块化,我认为这不是一个好做法。在一个Django项目中可以有多个应用程序。我通常有一个主应用程序,其中包含主要模型和其他应用程序
此外,如果您想在不同的项目中使用应用程序,只需制作它们并将它们放入单独的存储库(您可以根据需要添加这些存储库并使用pip安装)
至于RESTAPI,请查看伟大的。它提供了完整的CRUD功能,并结合crispy表单,您甚至可以使用简单的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
用于获取用户数据,但也可以从网页上完成)。当我刚刚制作一个webapp时,我使用{{form}}
标记自动呈现页面上的表单。我不认为在同一个应用程序中将REST部分与web部分结合在一起是好的,但是将它们分离为,core
、`api`和webapp
会在它们之间产生依赖关系。有什么建议吗?@nikolat328同意,混合应用程序不是一个好主意。将它们拆分为核心、api和webapp是一个很好的选择。我更新了我的答案,并加入了一个我喜欢用于类似项目的示例项目结构。