2010-11-29 15 views
2

J'ai une liste déroulante dans mon template django:Passe sélectionnez la valeur d'option dans le format d'URL nommé en utilisant Django et Jquery

<select name="submit_new" id="submit_new"> 
    <option value="Stdo">Studio</option> 
    <option value="Flm">Film</option> 
    <option value="Drctr">Director</option> 
</select> 
<button type="submit_type" id="submit_new_button">Go</button> 

Je voudrais saisir la valeur de la sélection et de le transmettre dans l'URL du nom de django modèle

$("#submit_new_button").click(function() { 
    var NewLink = {% url add_record $("#submit_new").val() %} 
    window.location.href = NewLink 
}); 

Clairement, comme écrit, cela ne fonctionne pas. Comment puis-je utiliser le modèle nommé {% url add_record VAR%} en combinaison avec la valeur jquery $ ("# submit_new"). Val()?

modifier:

Mon entrée url pour add_record est:

url(r'^add_(?P<modelname>\w+)/$', views.generic_change, name = 'add_record') 

Répondre

2

Certainement un problème avec l'entrée de add_record dans urls.py mais le modèle a besoin d'un peu d'aide aussi bien. Essayez d'être explicite avec tous les arguments pour cette entrée url. Vous pouvez passer à plus d'une courte notation hadn plus tard, mais pour l'instant juste essayer de faire avancer les choses de travail:

url(r'^add_(?P<modelname>\w+)/$', 
    view='your_app.views.generic_change', 
    name='add_record') 

Et puis essayez dans votre modèle:

$("#submit_new_button").click(function() { 
    var link = '{% url add_record 'NEWVALUESTUB' %}'; 
    link = link.replace('NEWVALUESTUB', $("#submit_new").val()); 
    window.location.href = link; 
}); 
+0

J'aime cette idée. Mais je reçois toujours un TemplateSyntaxError: Caught NoReverseMatch pendant le rendu: Reverse pour 'add_record' avec les arguments '(u' - NEW - VALUE-- ',)' et les arguments du mot clé '{}' non trouvés. D'après d'autres recherches, je pense qu'il n'y a pas de solution à cause de la façon dont Django rend les templates. Aimerait être corrigé. . . –

+0

a mis à jour la mise à jour de la question basée sur la réponse. Il y a définitivement une solution. Vous avez juste besoin de résoudre un problème à la fois; d'abord urls.py puis le template; ^) – istruble

+0

J'ai toujours un TemplateSyntaxError, mais quand j'ai supprimé les tirets, cela a fonctionné parfaitement (même sans changer le modèle d'URL). Merci! –

1
<script> 
$("#next-button").click(function() { 
    var countryid = $('input:radio[name=countries_list]:checked').val(); 
    var link = "{% url 'selectbank' value=2 %}"; 
    link = link.replace('2', countryid); 
    window.location.href=link; 
    }); 
</script> 

J'avais même problème avec les boutons radio. Suivi de la réponse ci-dessus. Mais j'ai eu l'erreur NoReverseMatch trouvée.

Je pourrais capable de le résoudre par cette méthode.