如何为Django路径分配默认值

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

我正在构建一个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和readings = 10

device_id/2132/readings/24我想在结果视图中找到device_id = 2132和readings = 24

python django
2个回答
2
投票

添加另一个向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。


0
投票

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

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

并写网址(使用re_path以使用正则表达式来声明num_readings是可选的):

urlpatterns = [
    re_path(
        'device_id/(?P<device_id>\w+)/readings/(?P<num_readings>\d+)?',
        views.results,
        name='results'
    ),
   # ...
]
© www.soinside.com 2019 - 2024. All rights reserved.