【问题标题】:URL to work with parameter and without parameter in Django在 Django 中使用参数和不使用参数的 URL
【发布时间】:2021-08-28 23:58:17
【问题描述】:

我在我的项目中使用 Django,我想渲染 thank-you 页面。 但它应该有或没有参数。

urls.py

urlpatterns = [
    ....
    path(r'thank-you?t=<type>?n=<name>', thank_you_view, name='thank-you'),
    ....
]

它适用于 :http://127.0.0.1:8080/thank-you%3Ft=teacher%3Fn=Ajay,%20Gaikwad 等网址 模板利用参数。

但不适用于没有参数的 url,例如:http://127.0.0.1:8080/thank-you 默认模板将在此处呈现。

我也尝试了一些正则表达式

path(r'thank-you(?t=&lt;type&gt;?n=&lt;name&gt;|'')', thank_you_view, name='thank-you'), 但它不起作用。


如果您使用下面的视图并使用模板渲染上下文,那么它将起作用。

views.py

def thank_you_view(request, *args, **kwargs):
    context = {kwargs['type']: kwargs['name']}
    return render(request, "light/thank-you.html", context=context)

编辑:

  • 有什么方法可以在 url 中使用正则表达式,这样它就可以双向使用?
  • 或者我们可以将参数设为可选?

【问题讨论】:

  • 你找到解决办法了吗?

标签: python django django-views django-templates


【解决方案1】:

一旦你定义了路径参数,Django 就会在 URL 中期待它。否则,您可以将其作为查询参数获取。您混淆了查询和路径参数。

【讨论】:

    猜你喜欢
    • 2015-05-06
    • 2016-12-27
    • 2015-08-21
    • 1970-01-01
    • 1970-01-01
    • 2016-08-13
    • 1970-01-01
    • 2016-04-15
    • 2016-01-08
    相关资源
    最近更新 更多