Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
创建django webapp+;RESTAPI端点_Django_Django Rest Framework - Fatal编程技术网

创建django webapp+;RESTAPI端点

创建django webapp+;RESTAPI端点,django,django-rest-framework,Django,Django Rest Framework,我正在尝试创建一个带有移动应用程序的网站。我分别使用web应用程序和REST API,但在这个项目中,我必须将两者结合起来 我的问题是,我必须如何将项目的这两个方面结合起来 Suposse我有一个用户模型,它有任务s。目前,我在一个名为myRESTapp的应用程序中有这些模型。但是现在,我希望能够编辑任务并利用Django表单,但我不想做另一个名为webapp的应用程序,并基于myRESTapi中的模型实现表单。考虑到应用程序的模块化,我认为这不是一个好做法。在一个Django项目中可以有多个应

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

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


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是一个很好的选择。我更新了我的答案,并加入了一个我喜欢用于类似项目的示例项目结构。