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

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

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

【问题讨论】:

    标签: django django-urls


    【解决方案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
      猜你喜欢
      • 2013-03-16
      • 2015-08-22
      • 2023-03-10
      • 1970-01-01
      • 2018-10-31
      • 2014-06-18
      • 1970-01-01
      • 2021-12-25
      • 2012-06-18
      相关资源
      最近更新 更多