2010-04-06 49 views
2
(r'^/(?P<the_param>[a-zA-z0-9_-]+)/$','myproject.myapp.views.myview'), 

我该如何改变它,以便“the_param”接受一个URL(编码)作为参数?如何在Django中编写此URL?

所以,我想传递一个URL给它。

mydomain.com/http%3A//google.com 

编辑:我应该删除正则表达式,像这样...然后它会工作吗?

(R '^ /(P [*])/ $??', 'myproject.myapp.views.myview'),

回答

2

添加%.的字符类:

[a-zA-Z0-9_%.-] 

注意:您不需要在字符类内部转义特殊字符,因为特殊字符在字符集内失去其含义。 -如果不是用来指定一个范围应该用斜杠或开头(python 2.4.x2.5.x,2.6.x)或字符集(python 2.7.x)的末尾进行转义,因此类似[a-zA-Z0-9_%-.]会抛出一个错误。

+0

http://rubular.com/可能是值得一试。 – jluebbert 2010-04-07 04:24:14

+0

jluebbert:不错的网站。我也喜欢这个:http://www.txt2re.com/ – 2010-04-07 07:43:36

0

你至少需要这样的东西:

(r'^the/uri/is/(?P<uri_encoded>[a-zA-Z0-9~%\._-])$', 'project.app.view'), 

这表达式应该匹配所有描述here

请注意,你的例子应该是mydomain.com/http%3A%2F%2Fgoogle.com(斜杠应该被编码)。

0

我认为你可以做到这一点:

(r'^(?P<url>[\w\.~_-]+)$', 'project.app.view')