【问题标题】:Django 2+ : Optional URL using PATH, without making multiple URLDjango 2+:使用 PATH 的可选 URL,无需创建多个 URL
【发布时间】:2019-11-19 15:16:00
【问题描述】:

我有这个网址

path('<slug>/thank_you/<user_id>', thank_you, name='thank_you'),

我希望&lt;user_id&gt; 是可选的,但我不想制作 2 个这样的网址

path('<slug>/thank_you', thank_you, name='thank_you'),
path('<slug>/thank_you/<user_id>', thank_you, name='thank_you2'),

我知道您可以使用正则表达式使其成为可选,但如果您使用的是 django

我如何获得这个?

【问题讨论】:

  • 我认为基于文档link是不可能的
  • 对于这种情况,请使用 re_path 而不是 path。然后在您看来 user_id 必须是可选参数,例如: my_view(request, slug, user_id=None)
  • @Mikey 你是对的,但 OP 提到了i want the &lt;user_id&gt; to be optional, but i dont want to make 2 urls like this

标签: python django url


【解决方案1】:

您可以为此使用URL Query String。例如:

# URL
path('/thank_you/', thank_you, name='thank_you'),

# View
def thank_you(request, slug):
    user_id = request.GET.get('from')
    # rest of the code

# Example route
http://localhost:8000/dummy-slug/thank_you/?from=dummy_user_id

【讨论】:

  • 感谢您的回答,我之所以要显示 user_id 是为了跟踪哪些用户以及有多少用户浏览了上一页。我使用谷歌分析,它不会检测到 http://localhost:8000/dummy-slug/thank_you?&lt;user_id&gt; 。它必须是正确的链接http://localhost:8000/dummy-slug/thank_you/&lt;user_id&gt;。你能用这个方法追踪user_id吗?
  • 你能分享你的谷歌分析代码吗?因为您应该能够使用谷歌分析发送查询字符串参数。
  • 不幸的是我没有访问谷歌分析代码的权限,它是由上级处理的。我先试试你的方法,谢谢:)
猜你喜欢
  • 2015-11-01
  • 2019-01-15
  • 1970-01-01
  • 2018-06-15
  • 1970-01-01
  • 2019-08-31
  • 1970-01-01
  • 2015-03-23
  • 2012-06-13
相关资源
最近更新 更多