使用 Router 与在 urlpatterns 中包含 url

问题描述 投票:0回答:2

假设我正在 Django 中创建一个 Todo 应用程序,传统上我会在 base_project urls.py 文件中包含我的应用程序的路径。然而,今天我遇到了一个教程,其中他们使用路由器来实现我已经说过的相同目的。 为什么我想使用路由器而不是在 urls.py 文件中包含路径? 作为参考,这里是教程中的一个片段,位于 https://www.digitalocean.com/community/tutorials/build-a-to-do-application-using-django-and-react

 # backend/urls.py

from django.contrib import admin
from django.urls import path, include                 # add this
from rest_framework import routers                    # add this
from todo import views                            # add this

router = routers.DefaultRouter()                      # add this
router.register(r'todos', views.TodoView, 'todo')     # add this

urlpatterns = [
    path('admin/', admin.site.urls),         path('api/', include(router.urls))                # add this
]

这里的backend是主要的django项目名称。

python django django-rest-framework django-views django-react
2个回答
1
投票

两者的工作原理相同。您可以在 urlpatterns 中添加 url。我遇到了和你一样的情况,在教程中他们使用路由而不是 url 模式,但我研究过并且两者的工作原理相同。


0
投票

url_patterns 是各个 URL 路由的定义列表。每个路由通常与视图函数或基于类的视图相关联。 相反,Routers 自动处理视图集的 URL 路由,减少样板文件并使管理 URL 变得更容易,尤其是在使用 RESTful 模式时。例如,DefaultRouter类注册 ViewSet 并为其处理标准 RESTful 路由的创建(列表、创建、检索、更新、部分更新、销毁)。您不需要手动定义每个 URL 模式。

© www.soinside.com 2019 - 2024. All rights reserved.