Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex Django URL反序列化问题_Regex_Django_Url - Fatal编程技术网

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中放一些字符是一种很好的习惯。