python - 如何在 Django 中大规模管理视图、URL 和模型?
问题描述
我是 Django 的新手。我经历了很多 Django 教程,但在所有教程中,他们都在与命名视图和模型相同的文件中管理所有视图和模型。有任何标准方法,因此可以正确管理。
是否可以使用数据库管理调用视图、url 和模型?
如何在企业级别管理这些事情。
解决方案
根据我在不同项目和团队中的经验,我们是这样做的:
application
├── api
│ ├── __init__.py
│ ├── urls.py
│ └── v1
│ ├── __init__.py
│ ├── view_a.py
│ ├── ...
│ ├── view_z.py
│ └── urls.py
├── apps.py
...
我将视图保存在不同的版本中,因此我们可以支持 API 和视图的向后兼容性。您必须创建一个Python 包(一个包含__init__
文件的目录);只需导入您想从该包中导出的所有内容。
例如,在application/api/v1/__init__.py
:
from .view_a import FooListView
from .view_b import BarDetailView
当然,您也可以在__init__
文件中创建类。您在其中写入的所有内容都可以直接从包的名称而不是视图的文件名中访问。
不要忘记继续对您的 API 进行版本控制urls.py
。
# api/urls.py
from django.urls import path, include
urlpatterns = [
path('v1/', include('application.api.v1.urls')),
path('v2/', include('application.api.v2.urls')),
...
]
# api/v1/urls.py
from django.urls import path
from . import * # this imports every view classes from __init__.py file
# Or you can just import directly from views instead
# of having an __init__ file:
# from .view_a import FooListView
urlpatterns = [
path('foo/', FooListView.as_view()),
...
]
推荐阅读
- linux - 将诸如 \t 和 \n 之类的格式字符添加到 JSON 字符串中,以便它们可以在 linux echo 命令中工作
- scala - 编写未包装的 json 数组 - Jackson
- python - 正则表达式匹配特定字符串后的多行
- java - 如何使用android中的回收器视图将事件放入日历中
- pandas - 索引时如何避免“系列不可调用错误”
- mysql - 为什么在 Gitpod 上连接 mysql 失败?
- html - box-shadow css 属性没有正确显示?
- vb.net - TextRenderer.MeasureText 为不同的宽度返回相同的高度
- linux - Ausearch不会转换文件
- angular-material - 从 Angular Material Tab 内容中获取滚动位置