Je n'arrive pas à obtenir une partie d'une URL avec la balise {% url %}
.Django: Recherche d'une partie de l'URL d'une vue en utilisant {% url%}
La configuration URL contient ceci:
url("^delete/(?P<uuid>[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12})/$",
deleteView,
name = "delete"),
qui signifie supprimer un élément par son UUID (la vue prend un paramètre « uuid » comme vous pouvez le voir). Comme je ne souhaite pas modifier tous les modèles lorsque les mappages d'URL changent, j'utilise des URL nommées ("delete" dans cet exemple).
Ensuite, dans le modèle, je veux accéder à cette URL via AJAX mais j'ai besoin de fournir le paramètre UUID en utilisant JavaScript, donc j'ai juste besoin de la partie /delete/
de l'URL. Ma solution actuelle est la suivante:
uuid = "some uuid that should be deleted on the server";
$.get("{% url myinstancenamespace:delete "00000000-0000-0000-0000-000000000000" %}"
.replace("00000000-0000-0000-0000-000000000000", uuid),
function(data)
{
// process server response
}, "text");
Cela ressemble plus à un hack pour moi. Alors, y a-t-il de meilleures solutions que celle-ci?
Ensuite, je devrais reparse l'URL dans la vue, ce qui conduit à un autre endroit qui doit connaître l'URLconf. Donc, c'est un autre (plus grand) hack IMO. – AndiDog
Pas du tout. L'uuid serait toujours passé en paramètre, mais la signature de la fonction serait 'def deleteView (requête, uuid = None):' et vous auriez juste besoin de cocher 'if uuid is None'. –
Pourriez-vous s'il vous plaît modifier votre réponse pour inclure la regex complète, je pense que je ne comprends pas exactement ce que vous voulez dire (ne fonctionne pas la façon dont j'interprète votre réponse;). – AndiDog