Hallo.
Was ich jetzt implementieren möchte, sind die Validierungseinstellungen beim Speichern nach dem Bearbeiten der Seite. Ich möchte, dass das Verhalten, wenn der Titel 33 Zeichen überschreitet, dem Verhalten entspricht, wenn der Titel 0 Zeichen enthält.
Um die Implementierungsmethode zu untersuchen, habe ich diesmal den Code von Wagtail untersucht. Vorheriger Artikel
Wagtail ist Open Source. Wenn Sie also im Internet nach "Wagtail Github" suchen, finden Sie Wagtail's Github-Seite. Ich möchte wissen, welcher Code beim Speichern der Seite beteiligt ist, also suchen wir vorerst im Code.
Viele django.po-Dateien sind betroffen. Dies ist eine Datei zum Konvertieren der auf der Seite verwendeten Wörter in eine andere Sprache. Ich glaube nicht, dass diese Datei eng mit dem Inhalt dieser Zeit zusammenhängt, deshalb werde ich sie überspringen.
Bachstelze / admin / views / pages.py sieht verdächtig aus. Suchen Sie auch in dieser Datei nach der Fehlermeldung, um herauszufinden, in welcher Funktion sie verwendet wird.
Anscheinend sieht die Bearbeitungsfunktion in Zeile 323 so aus. Die Funktionen zum Erstellen und Bearbeiten sind ähnlich. Wie Sie dem Namen entnehmen können, ist die Funktion, die beim Erstellen und Bearbeiten der Seite funktioniert, unterschiedlich. (rate mal)
Hier wird die Fehlermeldung geschrieben.
messages.validation_error(request, _("The page could not be saved due to validation errors"), form)
Wenn Sie sich die Importanweisung am Anfang der Datei ansehen, werden Nachrichten angezeigt
from wagtail.admin import messages, signals
Sie können sehen, dass es sich um [wagtail / admin / messages.py] handelt (https://github.com/wagtail/wagtail/blob/9be694b508b1dedb2616516fcd630727c0cd762e/wagtail/admin/messages.py). Es werden verschiedene Funktionen geschrieben, aber es scheint, dass sich die Verarbeitung allgemein zur Renderfunktion verschiebt.
def render(message, buttons, detail=''):
return render_to_string('wagtailadmin/shared/messages.html', {
'message': message,
'buttons': buttons,
'detail': detail,
})
Ich fand, dass ich diese ** Nachrichten ** verwenden sollte, um die Banner (?) Nachricht anzuzeigen, die oben auf der Seite mit Bachstelze angezeigt wird.
Lassen Sie uns nun die Nachrichtenmethode vorstellen. Die Methode, die wir bisher in Betracht gezogen haben, besteht darin, sie beim Speichern mit der Speichermethode von models.py zu validieren. Mit dieser Technik können Sie festlegen, ob in der Datenbank gespeichert werden soll. Es scheint jedoch schwierig zu sein, mit Fehlermeldungen umzugehen. Ich möchte dieses Mal Hooks verwenden, um die Fehlermeldung zu erhalten.
Hooks ist eine praktische Funktion, die Bachstelze eigen ist, und es ist möglich, ein Programm auszuführen, wenn ein bestimmtes Ereignis eintritt. Hooks unterstützen auch vor und nach dem Bearbeiten des Seitenobjekts, vor und nach dem Erstellen des Seitenobjekts usw. Versuchen wir also, Hooks zu verwenden, nachdem das Page-Objekt bearbeitet wurde.
from django.http import HttpResponse
from wagtail.core import hooks
from wagtail.admin import messages
@hooks.register('after_edit_page')
def after_edit_page(request, page):
is_title_length_valid = True if (len(page.title) > 0 | len(page.title) < 33) else False
if not is_title_length_valid:
messages.error(request, "Title Count Error")
def index(request):
return HttpReesponse("Hello, world.")
Das Ausführungsergebnis sieht so aus.
http://localhost:8000/django-admin/wagtailcore/page/
Sie haben sowohl die Überprüfung der Datenbankspeicherung als auch Fehlermeldungen implementiert.
Es ist ein Jahr her, seit ich es getan habe, während ich das Kind beobachtet habe. ** -_- ** Es scheint, dass Sie Artikel mit MarkDown in Bachstelze schreiben können, also denke ich, dass ich versuchen werde, es zu implementieren.
Recommended Posts