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

Comment puis-je changer cela pour que « the_param » accepte une URL (codé) en tant que paramètre?Comment écrire cette URL dans Django?

Alors, je veux passer une URL à elle. Edit: Dois-je supprimer la regex, comme ceci ... et alors cela fonctionnerait?

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

Répondre

2

Ajouter % et . à la classe de caractères:

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

note: Vous n'avez pas besoin d'échapper à des caractères spéciaux à l'intérieur des classes de caractères, car les caractères spéciaux perdent leur sens à l'intérieur des jeux de caractères. Le - si ne pas être utilisé pour spécifier une plage doit être échappé avec une barre oblique inverse ou mettre au début (pour python 2.4.x, 2.5.x, 2.6.x) ou à la fin du jeu de caractères (python 2.7.x) par conséquent quelque chose comme [a-zA-Z0-9_%-.] une erreur.

+0

http://rubular.com/ peut-être la peine de vérifier. – jluebbert

+0

jluebbert: Beau site. J'aime aussi celui-ci: http://www.txt2re.com/ –

0

Vous aurez au moins besoin de quelque chose comme:

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

Cette expression doit correspondre à tout décrit here.

Notez que votre exemple doit être mydomain.com/http%3A%2F%2Fgoogle.com (barres obliques doivent être codées).

0

Je pense que vous pouvez le faire avec:

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