0
J'ai un formulaire masqué dans le modèle Dajngo (1.10) et j'aimerais transmettre des données à views.py. J'ai suivi la voie habituelle mais le résultat de l'obtention de données n'est rien. Pourriez-vous nous dire ce qui a mal tourné et comment y remédier? Merci beaucoup. Le code est comme ci-dessous pour référence:Vues Django Obtenir des données POST
modèle:
<form style="display: hidden" action="/exRpt/" method="POST" id="#form99">
{% csrf_token %}
<input type="hidden" id="var199" name="var199" value=""/>
<input type="hidden" id="var299" name="var299" value=""/>
</form>
<script>
$(document).on('click', '.exWord', function(){
$("#var199").val("ExWord");
$("#var299").val("1,4,10");
$("#form99").submit();
window.location.href = "/exRpt/"
});
</script>
views.py:
def exRpt(request):
in_type = request.POST.get('var199')
in_news = request.POST.get('var299')
...
response = HttpResponse(f.getvalue(), content_type='application/vnd.ms-word')
response['Content-Disposition'] = 'attachment; filename=SelectedNewsReport.docx'
return response
Je pense que votre script n'est pas exécuté dans ce code, donc le formulaire n'obtient pas ces valeurs. –
Vous ne devez pas inclure le '#' dans l'ID du formulaire: '
@Alasdair a raison. Votre code JS ne sélectionne pas le formulaire, donc vous ne postez pas sur la vue. C'est une requête get (à partir de votre instruction 'window.location.href', dont vous n'avez pas besoin si le submit fonctionne correctement). Pour confirmer que vous pouvez imprimer 'request.method' dans votre fonction d'affichage. Mettez à jour l'ID comme @alasdair mentionné et cela devrait fonctionner correctement. – sundance