[英]Django: How to decode the url to get the variable value?
我正在尝试做django api。
这是urls.py中的代码
url(r'^edit/(?P<name>[\w-]+)/$', UpdateView.as_view(), name="update")
views.py
class UpdateView(RetrieveUpdateView):
queryset = Book.objects.all()
serializer_class = BookUpdateSerializer
lookup_field = "name"
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将为您解码网址。 当你访问self.kwargs['name']
,它将是'ABCD|1234'
,而不是'ABCD%7C1234'
。
但是,您有一个单独的问题。 您当前的正则表达式组[\\w-]+
仅匹配大写字母AZ,小写字母az,数字0-9,下划线_
和连字符-
。 如果你想匹配像|
这样的字符,你必须改变它 。
你可以简单地添加|
到小组:
# put | before - otherwise you have to escape hypen with \-
url(r'^edit/(?P<name>[\w|-]+)/$', UpdateView.as_view(), name="update")
或者,如果要添加到组中的其他字符很多,则可以匹配除正斜杠之外的任何字符:
url(r'^edit/(?P<name>[^/]+)/$', UpdateView.as_view(), name="update")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.