我正在构建一个 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'
),
# ...
]