如何在 Django url 中使用斜线传递参数

Posted

技术标签:

【中文标题】如何在 Django url 中使用斜线传递参数【英文标题】:How to pass arguments with slash in Django2 urls 【发布时间】:2018-09-10 05:41:02 【问题描述】:

我想使用包含正斜杠的参数调用 Django URL。例如,我想用'test1/test2' 打电话给mysite.com/test/。 (例如,天真地,url 应该是mysite.com/test/test1/test2

urls.py:

urlpatterns = [
    path('test/<test_arg>/', views.test, name='test'),
]

访问以下任一失败:

    mysite.com/test/test1/test2 mysite.com/test/test1%2Ftest2(%2F 是正斜杠的标准 URL 编码)

出现以下错误:

错误:

Using the URLconf defined in test.urls, Django tried these URL patterns, in this order:

    reader/ test/<test_arg>/
    admin/

The current path, test/test1/test2/, didn't match any of these.

我希望使用 1 中的路径会失败,但我很惊讶 2 中的路径会失败。

解决这个问题的正确方法是什么?

使用 Django 2.0.2

【问题讨论】:

你能发表你的看法吗? 【参考方案1】:

默认的path converter&lt;test_arg&gt;(相当于&lt;str:test_arg&gt;)不匹配正斜杠。

使用&lt;path:test_arg&gt; 匹配正斜杠。

【讨论】:

以上是关于如何在 Django url 中使用斜线传递参数的主要内容,如果未能解决你的问题,请参考以下文章

使用表单在 django 模板中传递 url 参数

django HttpResponseRedirect怎么传递参数

django HttpResponseRedirect怎么传递参数

在 django 模板 URL 标签中传递参数

在 Django 中将文件路径作为 URL 参数传递

使用 django-rest 框架中的 GET 方法将 url 作为参数传递?