2017-03-29 2 views
0

Si vous pensez que le titre ne convient pas, veuiller changer .J'ai une url django ci-dessous:ignorant urls inutile de faire un appel de serveur

url(r'^update_status/field1/(?P<field1_id>.*)/field2/(?P<field2_id>.*)/$', 'update_status', name='update_status') 

Cela fonctionne très bien. Mais cela attire aussi bien les urls comme:

update_status/field1/0445df4d8e1c43ae9/field2/f12b6b5c98/mraid.js/ 

et

update_status/field1/0445df4d8e1c43ae9/field2/f12b6b5c98 

Mais je veux capturer la deuxième URL. Que devrais-je changer dans l'URL django? Toute suggestion est appréciée.

Répondre

2

Votre expression régulière (?P<field_id>.*) capture tout caractère, y compris / caractères. Vous souhaitez limiter le format au field_id comme suit: (?P<field1_id>[0-9a-f]+) (même chose pour field2_id).

Remarque: Je suppose que votre ID est composé uniquement de caractères hexadécimaux.

+0

(? P [0-9a-f] +) devrait faire un meilleur travail. [0-5] pour les hexadécimaux. –

+0

Oui, '+' s'assure qu'il n'y a pas d'identifiants vides. J'ai édité ma réponse. Mais je ne comprends pas votre commentaire [0-5]. – dirkgroten

+1

C'était une erreur. '[0-9a-f] +' fonctionne pour les hexadécimaux. –