%20 的 django url 模式

Posted

技术标签:

【中文标题】%20 的 django url 模式【英文标题】:django url pattern for %20 【发布时间】:2011-04-10 04:13:05 【问题描述】:

在 Django 中,我需要使用什么 url 模式来处理 urlencode 字符,例如 %20

我正在使用(?P<name>[\w]+),但这仅处理字母数字字符,因此 % 会导致错误

【问题讨论】:

【参考方案1】:

我正在使用 Django 2.2。

它使用Path converter: str处理url中的%20(表示空格)

你只需要使用:

<name> or <str:name>

例如,以下示例加载 view.py 中定义的视图“some_view”

#urls.py
from django.urls import path
from . import views
urlpatterns = [
   path("<name>",views.some_view),
   ....
]

以下函数在处理后呈现“some.html”。在此示例中,将接收到的名称发送到“some.html”。

#view.py
def some_view(request, name):
    # process here
    context =  "name" : name 
    return render(request,"some.html",context)

【讨论】:

【参考方案2】:

做到这一点并允许其他字符的最佳方法是使用“\s”,即任何空格、制表符和换行符

(?P<name>[\w\s]+)

【讨论】:

%20 是空格,我不希望允许制表符或换行或软换行等【参考方案3】:

如果你只想留出空间:

(?P<name>[\w\ ]+)

【讨论】:

比允许所有非单词字符要好得多。谢谢。 这是我认为最好的答案:最严格,但仍然允许空间【参考方案4】:

我能够使用下面给出的配置使其工作。检查它是否适合您的需求。

(?P<name>[\w|\W]+)

【讨论】:

这不匹配所有单词字符和所有非单词字符吗? . 不会容易得多 @JKirchartz 恕我直言,但同样危险。 '[\w|\W]' 和 '.' 一样,但更混乱,所以 -1

以上是关于%20 的 django url 模式的主要内容,如果未能解决你的问题,请参考以下文章

如果在 django 的 urls.py 中找不到,则将任何 url 重定向到 404.html

如何摆脱 URL 中的“%20”代码(django)

Django 排除 url 模式

django 模板标签 url 仅在最后一个空 url 模式时有效

试图在 django 项目的 urls 文件夹中包含 url 模式

Django 错误:您的 URL 模式无效。确保 urlpatterns 是 url() 实例的列表