%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
django 模板标签 url 仅在最后一个空 url 模式时有效