我正在构建一个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
添加另一个向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):
# ...
并写网址(使用re_path
以使用正则表达式来声明num_readings
是可选的):
urlpatterns = [
re_path(
'device_id/(?P<device_id>\w+)/readings/(?P<num_readings>\d+)?',
views.results,
name='results'
),
# ...
]