Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/349.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
Python Django:如何解码url以获取变量值?_Python_Django_Django Urls - Fatal编程技术网

Python Django:如何解码url以获取变量值?

Python Django:如何解码url以获取变量值?,python,django,django-urls,Python,Django,Django Urls,我正在尝试做django api 下面是url.py中的代码 url(r'^edit/(?P<name>[\w-]+)/$', UpdateView.as_view(), name="update") name变量可能包含“|”符号 当我在浏览器中打开URL127.0.0.1:8000/api/edit/ABCD | 1234时,其中ABCD | 1234是变量name,URL将自动对其进行编码,并将其变成127.0.0.1:8000/api/edit/ABCD%7C1234 它无

我正在尝试做django api

下面是url.py中的代码

url(r'^edit/(?P<name>[\w-]+)/$', UpdateView.as_view(), name="update")
name
变量可能包含“|”符号

当我在浏览器中打开URL
127.0.0.1:8000/api/edit/ABCD | 1234
时,其中
ABCD | 1234
是变量
name
,URL将自动对其进行编码,并将其变成
127.0.0.1:8000/api/edit/ABCD%7C1234

它无法从我的数据库中找到此名称。
如何对其进行解码并从数据库中检索数据?

Django将为您解码url。当您访问self.kwargs['name']时,它将是
'ABCD | 1234'
,而不是
'ABCD%7C1234'

但是,您有一个单独的问题。您当前的正则表达式组
[\w-]+
将只匹配大写字母A-Z、小写字母A-Z、数字0-9、下划线
\u
和连字符
-
。如果要匹配像
|
这样的字符,则必须更改此选项

您只需将
|
添加到组中即可:

# put | before - otherwise you have to escape hypen with \-
url(r'^edit/(?P<name>[\w|-]+)/$', UpdateView.as_view(), name="update")
#把|放在前面-否则你必须用\-
url(r'^edit/(?P[\w |-]+)/$),UpdateView.as_view(),name=“update”)
或者,如果有许多其他字符要添加到组中,则可以将除正斜杠以外的任何字符与以下字符进行匹配:

url(r'^edit/(?P<name>[^/]+)/$', UpdateView.as_view(), name="update")
url(r'^edit/(?P[^/]+)/$),UpdateView.as_view(),name=“update”)

我建议只需在允许的字符列表中添加
r'^edit/(?P[\w-]+)/$”
非常感谢!这真的帮助了我。
url(r'^edit/(?P<name>[^/]+)/$', UpdateView.as_view(), name="update")