2010-08-27 4 views
1

Simple question. Comment puis-je transmettre une variable de l'URL à la vue? Je suis le Date Example.Comment passer une variable de l'url à une vue dans django?

Mon point de vue doit arguments:

def hours_ahead(request, offset): 

Mon url.py a cette »

(r'^plus/\d{1,2}/$', hours_ahead), 

Je sais que je dois passer par un autre argument, mais je ne sais pas comment obtenir le numéro de la chaîne d'URL (ie. 'temps/plus//' Quelque chose comme ça?

(r'^plus/\d{1,2}/$', hours_ahead, offset=??), 
+0

Votre URL ne comporte qu'un seul numéro. Seulement un. Quel est ce numéro? Heures d'avance ou de décalage? –

Répondre

1

Vous pouvez utiliser Named groups dans le regex

(r'^plus/(?P<offset>\d{1,2})/$', hours_ahead), 
0

Je ne suis pas sûr que je comprends bien votre question. Voici mon tir à répondre en fonction de ce que j'ai compris.

Ajout d'un named regex group à la configuration de votre URL devrait aider:

(r'^plus/(?P<offset>\d{1,2})/$', hours_ahead), 

Cela vous permettra de garder la vue existante:

def hours_ahead(request, offset): 
    ... 
0

vous pouvez ajouter des variables supplémentaires comme ceci:

(r'^plus/\d{1,2}/$', {'hours' : 5}, hours_ahead), 

Meilleures salutations!

0

De chapter 3 of the django book:

Maintenant que nous avons désigné un joker pour l'URL, nous avons besoin d'un moyen de passant que les données génériques pour la fonction de vue, de sorte que nous pouvons utiliser une fonction de vue unique pour tout décalage horaire arbitraire. Nous faisons ceci par en plaçant des parenthèses autour des données dans le modèle d'URL que nous voulons enregistrer . Dans le cas de notre exemple, nous voulons sauver ce nombre a été entré dans l'URL, donc nous allons mettre des parenthèses autour de la \ d {1,2}, comme ceci:

(r'^time/plus/(\d{1,2})/$', hours_ahead), 

Si vous êtes familier avec les expressions régulières, vous serez ici à la maison ici; nous utilisons des parenthèses pour capturer des données du texte correspondant.

Questions connexes