【问题标题】:Django Url pattern regex for tokens用于标记的 Django Url 模式正则表达式
【发布时间】:2017-05-24 10:34:30
【问题描述】:

我需要在我的 Django Url 模式中传递像 b'//x0eaa@abc.com//x00//xf0//x7f//xff//xff//xfd//x00' 这样的标记。我无法为导致的 Page not found 错误找到匹配的正则表达式。

我的网址会像/api/users/0/"b'//x0eaa@abc.com//x00//xf0//x7f//xff//xff//xfd//x00'"/

我尝试了以下正则表达式

url(r'^api/users/(?P<username>[\w\-]+)/(?P<paging_state>[\w.%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4})/$', views.getUserPagination),

【问题讨论】:

    标签: django django-urls


    【解决方案1】:

    请在请求标头或正文中传递令牌,然后在您的视图中相应地使用。

    【讨论】:

      【解决方案2】:

      考虑到您的网址中有一些静态可预测元素,例如 -

      1. api/users/
      2. /" 在 b 之前
      3. "/在'之后的末尾

      所以我可以通过以下两种方式中的任何一种来查看网址。正则表达式相应地提到:

      1. api/users/(一组单词、数字或连字符)/"(除换行符之外的任何字符)"/

        正则表达式: ^api\/users\/([\w\d\-]+)\/"(.*)"\/$

        网址: url(r'^api\/users\/([\w\d\-]+)\/"(.*)"\/$', views.getUserPagination),

      2. api/users/(一组单词、数字或连字符)/"(一个字符-b)'//(任意数量的单词或数字)@(任何数量的字或数字).(任何数量的字或数字) (任何字数、数字、正斜杠)'"/

        正则表达式: ^api\/users\/([\w\d\-]+)\/"([a-g]'\/\/[\w\d]*@[\w\d]*.[\w\d]*[\/\w\d]*')"\/$

        网址: url(r'^api\/users\/([\w\d\-]+)\/"([a-g]'\/\/[\w\d]*@[\w\d]*.[\w\d]*[\/\w\d]*')"\/$', views.getUserPagination),

      您应该能够使用以上两种方法中的任何一种。可以有多种方法来匹配 url 中的令牌部分。因此,除非这是一个很大的安全问题,否则您可以使用第 1 点中提到的最简单的方法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-02-01
        • 1970-01-01
        • 2022-12-18
        • 2011-03-22
        • 2013-07-26
        • 2014-07-08
        • 1970-01-01
        相关资源
        最近更新 更多