首页 > 解决方案 > 如何在 Django 中大规模管理视图、URL 和模型?

问题描述

我是 Django 的新手。我经历了很多 Django 教程,但在所有教程中,他们都在与命名视图和模型相同的文件中管理所有视图和模型。有任何标准方法,因此可以正确管理。

是否可以使用数据库管理调用视图、url 和模型?

如何在企业级别管理这些事情。

标签: pythondjangodjango-modelsdjango-viewsdjango-urls

解决方案


根据我在不同项目和团队中的经验,我们是这样做的:

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()),
    ...
]


推荐阅读