如何在 Django 中大规模管理视图、URL 和模型?

How to manage views,urls and models on large scale in Django?

我是 Django 的新手。我浏览了很多 Django 教程,但在所有教程中,他们都在与命名视图和模型相同的文件中管理所有视图和模型。有任何标准的方法,所以它可以被适当地管理。

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

如何在企业层面管理这些东西。

您可以创建一个名为 views 的包。然后你可以为每个视图创建一个单独的文件,并将它们中的每一个导入到视图包的 __init__.py 中。这样做您仍然可以像以前一样导入视图。

my_app.
├── views
    ├── __init__.py
    ├── my_view.py

然后在 my_view.py:

def my_view(request):
    pass

并且在 __init__.py 中:

from my_app.views.my_view import my_view

在所有其他文件中,您可以像这样导入 my_view:

from my_app.views import my_view

同样可以对模型、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__ 文件中创建 类。您在其中写入的所有内容都可以直接从包的名称而不是视图的文件名访问。

别忘了在 urls.py 中也对您的 API 进行版本控制。

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