使用“ ?: ”将 URL 中提供的传递参数设置为可选的 [Non-Capturing]
Posted
技术标签:
【中文标题】使用“ ?: ”将 URL 中提供的传递参数设置为可选的 [Non-Capturing]【英文标题】:making the passed parameters provided in URL as optional [Non-Capturing] using " ?: " 【发布时间】:2020-01-01 07:44:56 【问题描述】:我想将 URL 中传递的参数设为可选。我有一个这样的网址 ->
path('users/<optional_value>',views.users_list_or_detail, name='users_list_or_details'),
我不想制作 2 个不同的 URL 来给我列表或详细信息。如何将第二个 <optional_value>
设为可选,以便如果我不向视图提供 <optional_value>
,它会为我提供用户列表和用户详细信息(如果提供)?
我在 Internet 上查看的一个选项是
http://localhost:8000/users/?from=user_id
如何使用 Django 文档中给出的urls.py
中的 ?: 使其成为可选?
【问题讨论】:
【参考方案1】:在您的模板中(这将创建您定义的 url)
<a href="% url 'users_list_or_details' %?from=user_id ">Link</a>
在你的视野中
if 'from' in request.kwargs:
user_id = from
【讨论】:
感谢 HenryM。再次感谢您帮助我。我已经保存了你的答案。这是我对此的第二个问题。上次你的方法效果很好,但我只是想学习那个 ?: 方法。【参考方案2】:在您看来,为您的 url kwargs 提供默认参数 None
,在这种情况下为 optional_value
,并检查参数是否可用。
类似:
def users_list_or_detail(request, optional_value=None):
if optional_value:
# render detail
else:
# render list
【讨论】:
但是如果我点击没有<optional_param>
的URL,它会抛出一个错误,说正在寻找第二个参数,未提供
@Deshwal 你试过这种方法吗?
是的。我点击了users/
之类的 URL,错误是该 url 需要一个额外的参数。我会做错什么?以上是关于使用“ ?: ”将 URL 中提供的传递参数设置为可选的 [Non-Capturing]的主要内容,如果未能解决你的问题,请参考以下文章
传递给 PHP WordPress body_class 的 URL 参数值
使用javascript在包含特殊字符的URL中传递参数[重复]
JQuery中$.ajax()方法参数详解 ASP.NET jquery ajax传递参数