2010-06-25 42 views
5

我想通过一个URL传递一个'字符串'参数到一个视图。 的urls.py去Django url解析 - 通过原始字符串

('^add/(?P<string>\w+)', add), 

我在用绳子,包括标点符号,换行,空格等问题。 我想我必须改变\ w +为别的东西。 基本上这个字符串会被用户从他选择的文本中复制,我不想改变它。我想接受任何角色和特殊角色,以便视图完全按照用户所复制的内容行事。

我该如何改变它?

谢谢!

回答

2

那么,首先,网址中有很多字符是不允许的。认为?和空间的初学者。无论你做什么,Django都可能会阻止它们传递给你的视图。

其次,你想了解re模块。它是为这些URL匹配设置语法的。 \w表示任何大写或小写字母,数字或_(基本上,标识符字符,但不禁止前导数字)。

将字符串传递给URL的正确方法是作为表单参数(即在URL中有?paramName=并且特殊字符已转义,例如空格更改为+后)。

4

请注意,您只能使用可理解为正确URL的字符串,将任何字符串作为url传递都不是好主意。

我用这个正则表达式,允许在我的网址字符串值:

(?P<string>[\w\-]+) 

这使得有“蛞蝓;在你的网址(如:'this-is-my_slug')

+0

顺便说一句,'\ w'包含'_',如果'''(和'可选'^')之后的第一个东西是'',那么''' '(?P [ - \ w] +)'。 – 2010-06-25 12:01:49