Bonjour,
J'ai un formulaire à base de bootstrap. Quand je le valide, je voudrais tester les champs remplis. Si c'est OK, j'écris les données dans un fichier que l'utilisateur télécharge, sinon, j'affiche les erreurs trouvées (dans une page html spécifique, ou idéalement dans une boite de dialogue modale).
dans ma vue :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| def mainform(request):
if request.method == 'POST':
items = dict(request.POST.items())
# contrôle des données
valide = True
msg = ""
if items["champ1"] == "":
msg += "champ1 non valide"
valide = False
if items["champ2"] == "0":
msg += "champ2 non valide"
valide = False
if valide:
string2write = formate(champ1, champ2)
response = HttpResponse(string2write,
content_type="text/plain",
headers={"Content-Disposition": 'attachment; filename="errors.txt"'},
)
return response
else:
render(request, 'errors.html', {"errors": msg})
else:
return render(request, 'mainform.html') |
et j'ai un template errors.html:
1 2 3 4 5 6 7 8 9 10 11 12 13
| <!DOCTYPE html>
{% extends "base.html" %}
{% load static %}
{% block css %}
<link rel="stylesheet" href="{% static 'css/custom.css' %}" type="text/css">
{% endblock css %}
{% block content %}
<div>
{{errors}}
</div>
{% endblock content %} |
Si je valide et que mon formulaire a des erreurs, au lieu d'afficher la page erreurs.html, j'ai l'erreur :
The view monappli.views.mainform didn't return an HttpResponse object. It returned None instead.
Qu'est ce cloche?
et dans un deuxième temps, comment afficher les erreurs dans une boite modale au lieu de les afficher sur une page html.
Merci,
Nico
Partager