EDIT: J'ai identifié la cause en tant que paquets python fournis avec RHEL 7. La solution consistait à installer une autre version. Dans mon cas, j'ai juste déplacé le serveur à centOS, où le python fourni fonctionne avec django.Pourquoi ma forme django est-elle validée lorsque je n'appelle pas? Is_valid
J'ai une forme que les actions vers ma vue de la maison, il contient deux boutons, enregistrer et annuler. Lorsqu'il est exécuté sur le serveur de développement local (manage.py runserver), cela fonctionne correctement. Lorsque j'ai poussé cela en production, le bouton Annuler renvoie des erreurs de validation de formulaire, même si la méthode is_valid n'est pas appelée.
Voici la vue:
def home(request):
#uses home.html
if request.method == 'POST':
#Figure out which button was pressed
#Cancel Button - Back to home
if request.POST.get("cancel"):
#return HttpResponseRedirect(request.META.get('HTTP_REFERER'))
footer = request
lineitems = Budget.build(request.user)
c = {'lineitems': lineitems,
'footer':footer,}
return render(request, 'home.html', c)
#Save button on config.html IncomeForm/Expenses Form
if request.POST.get("config_save"):
#ExpensesForm submitted
if 'expenseName' in request.POST:
form = ExpensesForm(request.POST)
if form.is_valid():
form.save()
else:
temp = 'config.html'
footer = 'Expense Form Invalid'
c = {'form':form,
'footer':footer,}
return render(request, temp, c)
#IncomeForm submitted
else:
form = IncomeForm(request.POST)
if form.is_valid():
form.save()
else:
form = IncomeForm(request.POST)
temp = 'config.html'
footer = 'Form Invalid'
c = {'form':form,
'footer':footer,}
return render(request, temp, c)
#Use Budget Class to populate a table in template
Budget.update_data({'months':12,
'user':request.user})
temp = 'home.html'
footer = '* Line Modified'
lineitems = Budget.build(request.user)
c = {'lineitems': lineitems,
'footer':footer,}
return render(request, temp, c)
# if a GET (or any other method) we'll load the budget
else:
footer = '* Line item modified'
footer = request
Budget.update_data({'user': request.user,
'months':12})
lineitems = Budget.build(request.user)
c = {'lineitems': lineitems,
'footer':footer,}
return render(request, 'home.html', c)
Voici le modèle:
{% extends "base.html" %}
{% load bootstrap3 %}
{% block title %}
<h1>Add {{ itemtype }}</h1>
{% endblock %}
{% block content %}
<form action="{% url 'home' %}" method="post">
{% csrf_token %}
{{ form.as_p }}
<div class="btn-group">
<input type="submit" name="config_save" value="Save" class="btn btn-primary"/>
<input type="submit" name="cancel" value="Cancel" class="btn btn-default"/>
</div>
</form>
{% endblock %}
{% block footer %}
{{ footer }}
{% endblock %}
EDIT *
j'ai pu recréer cette question dans l'environnement dev quand je l'ai remplacé
{{ form.as_p }}
Avec
{% bootstrap_form form layout='vertical' %}
Malheureusement, ni l'un ni l'autre ne fonctionnait sur le serveur apache/wsgi.
Voici mes formes. Note J'ai aussi essayé de supprimer la classe: form-control et cela n'a fait aucune différence. J'ai un autre formulaire et une vue qui se comporte presque identique à cela (annuler est géré avec un autre, forme est modelform) qui fonctionne, la seule différence étant qu'il n'y a pas de champs de date. Pour exclure que ce soit le problème, j'ai exclu les champs de date mais j'avais toujours le même problème.
#Edit form to add/edit Expenses and Bills
class ExpensesForm(forms.ModelForm):
class Meta:
model = Items
exclude = ('skiplst',)
widgets = {'user': forms.HiddenInput(),
'itemType': forms.HiddenInput(),
'itemName': forms.TextInput(attrs={'class':'form-control',}),
'category': forms.Select(attrs={'class':'form-control',}),
'itemAmount': forms.NumberInput(attrs={'class':'form-control',}),
'payCycle': forms.Select(attrs={'class':'form-control',}),
'itemNote': forms.TextInput(attrs={'class':'form-control',}),
'nextDueDate': forms.DateInput(attrs={'name': 'date',
'class':'form-control'}),
'endDate': forms.DateInput(attrs={'name': 'date',
'class':'form-control'})}
#Edit form to add/edit Income Sources
class IncomeForm(forms.ModelForm):
class Meta:
model = Items
exclude = ('category','skiplst')
widgets = {'user': forms.HiddenInput(),
'itemType': forms.HiddenInput(),
'itemName': forms.TextInput(attrs={'class':'form-control',}),
'itemAmount': forms.NumberInput(attrs={'class':'form-control',}),
'payCycle': forms.Select(attrs={'class':'form-control',}),
'itemNote': forms.TextInput(attrs={'class':'form-control',}),
'nextDueDate': forms.DateInput(attrs={'name': 'date',
'class':'form-control'}),
'endDate': forms.DateInput(attrs={'name': 'date',
'class':'form-control'})}
postez vos retraçages s'il vous plaît. – itzMEonTV
Il n'y a pas de traceback, le code s'exécute normalement. – Edyoucaterself
à quoi ressemblent vos formulaires? – yedpodtrzitko