Regex Django URL反序列化问题
我的Regex Django URL反序列化问题,regex,django,url,Regex,Django,Url,我的url.py中有以下路径: url(r'^tag/(?P<tag>[-\w]+)/$', render_search, name="search_by_tag"), url(r'^tag/(?P[-\w]+)/$),render_search,name=“search_by_tag”), 因此,我在那里传递一个标记并得到一个结果,例如/tag/python/,/tag/django/ 但当我传递类似于/tag/C++/的值时,它会失败,甚至当我传递编码值时它也会失败:/tag
url.py中有以下路径:
url(r'^tag/(?P<tag>[-\w]+)/$', render_search, name="search_by_tag"),
url(r'^tag/(?P[-\w]+)/$),render_search,name=“search_by_tag”),
因此,我在那里传递一个标记并得到一个结果,例如/tag/python/
,/tag/django/
但当我传递类似于/tag/C++/
的值时,它会失败,甚至当我传递编码值时它也会失败:/tag/C%2B%2B/
如何修复该问题并接受后端的编码值 这里都是关于正则表达式的。您提供的正则表达式模式将只接受字母、数字、下划线和“-”。要接受所有可能的字符(不包括“/”和“?”),应将正则表达式设置为如下所示:
url(r'^tag/(?P<tag>[^/?]+)/$', render_search, name="search_by_tag"),
url(r'^tag/(?P[^/?]+)/$),render_search,name=“search_by_tag”),
但这不是一个好主意,你最好将你的标签名拼凑起来,并在url中使用拼凑好的形式。首先,它们看起来会很难看。有些字符会被浏览器编码,有些你会在你的网站上编码,看起来不太好看。第二,某些浏览器可能存在一些问题,第三个原因是,当有人复制url并将其粘贴到某个地方时,输入可能会禁止url中的某些字符。只在url中放一些字符是一种很好的习惯。