如何将默认值分配给 Django 路径



我正在构建一个 Django API,其中我的urls.py路径之一是: path('device_id/<str:device_id>/readings/<int:num_readings>, views.results, name='results')

如果用户指定了设备 ID 但没有输入多个读数,我想避免收到 404。我希望将读数的默认值分配给 10。

此 URL 连接到名为 results 的视图

def results(request, device_id, readings):

例如,如果用户转到: device_id/2132/readings/我想在结果视图中device_id = 2132 和读数 = 10

device_id/2132/readings/24我想在结果视图中device_id = 2132 和读数 = 24

添加另一个路径,在其中将默认值添加到kwargs,例如:

urlpatterns = [
    path(
        'device_id/<str:device_id>/readings/<int:num_readings>',
        views.results,
        name='results'
    ),
    path(
        'device_id/<str:device_id>/readings/',
        views.results,
        name='results10'
        kwargs={'num_readings': 10}
    ),
    # ...
]

因此,这里的第二个视图是没有num_readings变量的路径,但kwargs是一个包含要传递给视图的其他(命名(参数的 dctionary。

如何在视图中指定读数的默认值:

def results(request, device_id="", readings=10):
    # ...

并编写类似 URL 的 URL(使用 re_path 以便使用正则表达式来声明num_readings是可选的(:

urlpatterns = [
    re_path(
        'device_id/(?P<device_id>w+)/readings/(?P<num_readings>d+)?',
        views.results,
        name='results'
    ),
   # ...
]

最新更新