Im Gegensatz zu Pythons normalem Versuch, mit Ausnahme der Ausnahmebehandlung, bleibe ich bei der Erkennung von Ausnahmen und der Anzeige des Inhalts, daher werde ich Aufzeichnungen darüber führen.
Dieses Mal möchte ich einen Artikel über die Anzeige einer Fehlermeldung schreiben, wenn beim Überprüfen von Variationen eines Formulars oder Modells eine eindeutige Validierungsprüfung abgefangen wird.
Ich habe eine einfache Unschärfefilterfunktion mit OpenCV entwickelt und wollte den Benutzer bitten, die Filtergröße einzugeben und die Effektstärke (Filtergröße) aus diesem Wert zu bestimmen.
Also habe ich ein Formular mit der Form-Klasse erstellt, aber da ich den Gauß-Filter verwendet habe, wird eine Fehlermeldung angezeigt, wenn der eingegebene Wert gerade ist.
Von hier aus habe ich darüber nachgedacht, eine eindeutige Variationsprüfung für die Form-Klasse zu erstellen, die "einen Fehler behandelt, wenn der Eingabewert gerade ist".
Wenn Sie einen Fehler machen, tut es mir leid. Sie müssen sich nicht zu viele Sorgen um models.py machen.
app/urls.py
app_name = 'app'
urlpatterns = [
path('', views.IndexView.as_view(), name='index'),
]
models.py
class Image(models.Model):
img_src = models.ImageField(upload_to=get_upload_to)
form.py
def is_oddnumber(value): #Funktion zum Überprüfen, ob es ungerade ist
if value % 2 == 0:
raise ValidationError('Bitte geben Sie eine gerade Zahl ein')
class Form(forms.ModelForm):
class Meta:
model = Image
fields = ('img_src')
filter_size = forms.IntegerField(
required=True,
max_value=100,
min_value=1,
validators=[is_oddnumber], #Zusätzlich ist eingeschaltet_Führen Sie eine Validierungsprüfung mit einer ungeraden Zahl durch
)
views.py
class IndexView(generic.TemplateView)
template_name = index.html
def get(self, request, *args, **kwargs):
form = Form()
return render(request, self.template_name, {'form': form})
def post(self, request, *args, **kwargs):
form = Form(request.POST, request.FILES)
if form.is_valid():
return redirect(○)
return render(request, self.template_name, {'form': form}) #Stellen Sie das Formular mit der Fehlermeldung ein und zeigen Sie es erneut an
index.html
<form action="{% url 'app:index' %}" method="POST" enctype="multipart/form-data">
{% csrf_token %}
{{ form.as_p }}
<input type="submit">
</form>
{% if form.errors %}
<ul>
{% for error in form.non_field_errors %}
<li>{{ error }}</li>
{% endfor %}
</ul>
{% endif %}
Es scheint, dass die Fehlermeldung, die das Argument für das Auslösen von ValidationError ist, in form.errors gespeichert ist.
Wenn daher ein Variationsfehler auftritt, kann die Fehlermeldung ohne Bildschirmübergang angezeigt werden, indem das Formular mit der Fehlermeldung in form.errors mit render erneut angezeigt wird.
Recommended Posts