Heim Backend-Entwicklung Python-Tutorial Kenntnisse im Backend-Managementsystem im Django-Framework (Teil 2)

Kenntnisse im Backend-Managementsystem im Django-Framework (Teil 2)

Jun 17, 2023 pm 07:09 PM
技巧 django 后台管理

Backend-Managementsystem-Fähigkeiten im Django-Framework (Teil 2)

Im vorherigen Artikel haben wir einige Backend-Managementsystem-Fähigkeiten im Django-Framework vorgestellt, z. B. wie man das Layout der Hintergrundseite anpasst, wie man Filter anpasst, wie man benutzerdefinierte Aktionen durchführt, usw. In diesem Artikel werden weitere praktische Tipps vorgestellt, die Ihnen helfen, das Django-Framework besser zu nutzen.

  1. So gehen Sie mit dem Standardwert von ForeignKey im Modell um

Im Django-Modell ist ForeignKey ein sehr praktischer Feldtyp. Wenn wir jedoch eine neue Modellinstanz erstellen, muss das ForeignKey-Typfeld eine Instanz des zugehörigen Modells angeben, damit es erfolgreich gespeichert werden kann. Wenn nicht angegeben, werden NULL-Werte standardmäßig gespeichert. In einigen Fällen möchten wir möglicherweise, dass das Feld vom Typ ForeignKey in einer Standardzuordnungsinstanz gespeichert wird. In diesem Fall können wir die Methode get_or_create von Django verwenden.

Zum Beispiel haben wir ein Produktmodell und definieren dafür ein ProductCategory-ForeignKey-Feld. Wir möchten automatisch eine Standardkategorieinstanz zuordnen, wenn wir eine neue Produktinstanz erstellen. Wir können dem Modell den folgenden Code hinzufügen:

class Product(models.Model):
    name = models.CharField(max_length=100)
    category = models.ForeignKey(ProductCategory, default=get_default_category)

   def get_default_category():
        """
        返回默认的ProductCategory实例或者创建一个新的实例
        """
        category, _ = ProductCategory.objects.get_or_create(name='Default Category')
        return category
Nach dem Login kopieren

In Auf diese Weise wird beim Erstellen einer neuen Produktinstanz standardmäßig automatisch eine ProductCategory-Instanz mit dem Namen „Standardkategorie“ zugeordnet.

  1. Wie kann man ein Modell im Hintergrundverwaltungssystem darauf beschränken, nur eine Instanz zu erstellen?

In manchen Fällen möchten wir möglicherweise, dass ein Modell nur eine Instanz erstellt, beispielsweise bei globalen Einstellungen auf einer Website. Zu diesem Zeitpunkt können Sie die SingletonModel-Bibliothek von Django verwenden, die ein BaseSingletonModel bereitstellt, mit dem wir jedes Modell problemlos in ein Singleton-Modell konvertieren können.

Zum Beispiel haben wir ein GlobalSettings-Modell und hoffen, dass es nur eine Instanz erstellen kann. Es kann wie folgt definiert werden:

from singleton_models.models import SingletonModel

class GlobalSettings(SingletonModel):
    site_name = models.CharField(max_length=100, default='')
    site_url = models.URLField(default='')
    # 其他全局设置字段
Nach dem Login kopieren

Nachdem wir es definiert haben, können wir im Hintergrundverwaltungssystem nur eine GlobalSettings-Instanz erstellen und bearbeiten.

  1. So fügen Sie benutzerdefinierte Middleware zum Backend-Managementsystem hinzu

Im Django-Framework ist Middleware ein Interceptor, der zur Verarbeitung von Anfragen und Antworten verwendet wird. Es kann die Anfrage oder Antwort verarbeiten, bevor die Anfrage die Ansichtsfunktion erreicht, nachdem die Ansichtsfunktion die Anfrage verarbeitet hat und bevor die Antwort an den Client gesendet wird. Unter anderem ermöglicht uns das Hinzufügen benutzerdefinierter Middleware zum Hintergrundverwaltungssystem, die Vorgänge des Administrators einfach abzufangen und zu verarbeiten.

Wenn wir beispielsweise möchten, dass der Administrator bei bestimmten Änderungsvorgängen ein sekundäres Bestätigungskennwort eingeben muss, können wir der Datei „settings.py“ des Django-Projekts den folgenden Code hinzufügen:

MIDDLEWARE = [
    # 默认的中间件
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    # 自定义中间件
    'myapp.middleware.ConfirmPasswordMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

CONFIRMED_ACTIONS = (
    'myapp.views.EditProductView',
    'myapp.views.DeleteProductView',
)

class ConfirmPasswordMiddleware:
    def __init__(self, get_response):
        self.get_response = get_response

    def __call__(self, request):
        # 根据请求的URL判断是哪个视图函数,如果是CONFIRMED_ACTIONS中的视图函数,需要做二次确认
        view_func = resolve(request.path_info).func
        if view_func and view_func.__module__ + "." + view_func.__name__ in CONFIRMED_ACTIONS:
            if not request.session.get('password_confirmed', False):
                # 没有输入二次确认密码,跳转到输入页面
                return redirect(reverse('confirm-password'))

        response = self.get_response(request)

        return response
Nach dem Login kopieren

Im obigen Code haben wir Definieren Sie eine ConfirmPasswordMiddleware. Sie fängt die Anfrage ab, bevor sie die Ansichtsfunktion erreicht, und bestimmt, ob ein zweites Bestätigungskennwort erforderlich ist. CONFIRMED_ACTIONS ist eine Liste von Ansichtsfunktionen, die eine sekundäre Bestätigung erfordern. Wir können sie nach Bedarf hinzufügen oder löschen. In der Ansichtsfunktion können wir über request.session.get('password_confirmed', False) abfragen, ob der aktuelle Benutzer das sekundäre Bestätigungskennwort eingegeben hat.

  1. So fügen Sie dem Modell des Backend-Managementsystems einen Serializer hinzu

Im Django-Framework ist Serializer eine Klasse, die zum Konvertieren des Modells in ein Wörterbuch- oder JSON-Format verwendet wird. Durch das Hinzufügen eines Serialisierers zum Backend-Managementsystem können wir das Modell einfach in das JSON-Format konvertieren und ausgeben.

Zum Beispiel haben wir ein Produktmodell und möchten es in das JSON-Format konvertieren und im Hintergrundverwaltungssystem ausgeben. Es kann wie folgt definiert werden:

from django.contrib import admin
from django.core.serializers import serialize
from django.http import HttpResponse

class ProductAdmin(admin.ModelAdmin):
    # 列表视图显示的字段列表
    list_display = ('name', 'price', 'category')

    # 自定义action函数
    def export_as_json(self, request, queryset):
        response = HttpResponse(content_type="application/json")
        serializers.serialize("json", queryset, stream=response)
        return response
    export_as_json.short_description = "导出为JSON"

    # 自定义函数按钮
    change_list_template = 'admin/myapp/product/list.html'

    def get_urls(self):
        urls = super().get_urls()
        my_urls = [
            path('my_view/', self.my_view),
        ]
        return my_urls + urls

    def my_view(self, request):
        data = serialize('json', Product.objects.all())
        return JsonResponse(data, safe=False)

admin.site.register(Product, ProductAdmin)
Nach dem Login kopieren

Im obigen Code haben wir ProductAdmin eine export_as_json-Funktion hinzugefügt. Das kann Die aktuell ausgewählte Modellinstanz wird in das JSON-Format konvertiert und an den Client ausgegeben. Gleichzeitig haben wir ProductAdmin auch eine my_view-Funktion hinzugefügt, die alle Modellinstanzen direkt abfragen und in die Ausgabe im JSON-Format konvertieren kann.

Zusammenfassung

Das Hintergrundverwaltungssystem des Django-Frameworks ist ein wichtiges Werkzeug für die Entwicklung von Webanwendungen. Es bietet viele vorgefertigte Funktionen, mit denen wir Modellinstanzen, Stapeländerungen und Löschungen einfach verwalten können. In diesem Artikel stellen wir einige praktische Tipps für das Backend-Verwaltungssystem des Django-Frameworks vor, darunter den Umgang mit dem Standardwert von ForeignKey im Modell, die Beschränkung eines Modells im Backend-Verwaltungssystem auf die Erstellung nur einer Instanz und das Hinzufügen Anpassung an das Backend-Managementsystem. Definieren Sie Middleware und wie Sie Serialisierer zum Modell des Backend-Managementsystems hinzufügen. Durch den Einsatz dieser Techniken können wir das Hintergrundverwaltungssystem des Django-Frameworks besser nutzen.

Das obige ist der detaillierte Inhalt vonKenntnisse im Backend-Managementsystem im Django-Framework (Teil 2). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Teilen von Win11-Tipps: Ein Trick, um die Anmeldung mit einem Microsoft-Konto zu überspringen Teilen von Win11-Tipps: Ein Trick, um die Anmeldung mit einem Microsoft-Konto zu überspringen Mar 27, 2024 pm 02:57 PM

Teilen von Win11-Tipps: Ein Trick, um die Anmeldung bei einem Microsoft-Konto zu überspringen Windows 11 ist das neueste Betriebssystem von Microsoft mit neuem Designstil und vielen praktischen Funktionen. Für einige Benutzer kann es jedoch etwas nervig sein, sich bei jedem Systemstart bei ihrem Microsoft-Konto anmelden zu müssen. Wenn Sie einer von ihnen sind, können Sie auch die folgenden Tipps ausprobieren, die es Ihnen ermöglichen, die Anmeldung mit einem Microsoft-Konto zu überspringen und direkt auf die Desktop-Oberfläche zuzugreifen. Zunächst müssen wir anstelle eines Microsoft-Kontos ein lokales Konto im System erstellen, um uns anzumelden. Der Vorteil dabei ist

Ein Muss für Veteranen: Tipps und Vorsichtsmaßnahmen für * und & in C-Sprache Ein Muss für Veteranen: Tipps und Vorsichtsmaßnahmen für * und & in C-Sprache Apr 04, 2024 am 08:21 AM

In der C-Sprache stellt es einen Zeiger dar, der die Adresse anderer Variablen speichert; & stellt den Adressoperator dar, der die Speicheradresse einer Variablen zurückgibt. Zu den Tipps zur Verwendung von Zeigern gehören das Definieren von Zeigern, das Dereferenzieren von Zeigern und das Sicherstellen, dass Zeiger auf gültige Adressen zeigen. Tipps zur Verwendung von Adressoperatoren sowie das Abrufen von Variablenadressen und das Zurückgeben der Adresse des ersten Elements des Arrays beim Abrufen der Adresse eines Array-Elements . Ein praktisches Beispiel, das die Verwendung von Zeiger- und Adressoperatoren zum Umkehren einer Zeichenfolge veranschaulicht.

Was sind die Tipps für Anfänger zum Erstellen von Formularen? Was sind die Tipps für Anfänger zum Erstellen von Formularen? Mar 21, 2024 am 09:11 AM

Wir erstellen und bearbeiten Tabellen oft in Excel, aber als Neuling, der gerade erst mit der Software in Berührung gekommen ist, ist die Verwendung von Excel zum Erstellen von Tabellen nicht so einfach wie für uns. Im Folgenden führen wir einige Übungen zu einigen Schritten der Tabellenerstellung durch, die Anfänger, also Anfänger, beherrschen müssen. Wir hoffen, dass sie für Bedürftige hilfreich sind. Unten sehen Sie ein Beispielformular für Anfänger: Mal sehen, wie man es ausfüllt! 1. Es gibt zwei Methoden, ein neues Excel-Dokument zu erstellen. Sie können mit der rechten Maustaste auf eine leere Stelle in der Datei [Desktop] – [Neu] – [xls] klicken. Sie können auch [Start]-[Alle Programme]-[Microsoft Office]-[Microsoft Excel 20**] wählen. 2. Doppelklicken Sie auf unser neues Ex

VSCode-Erste-Schritte-Leitfaden: Ein Muss für Anfänger, um die Verwendungsfähigkeiten schnell zu erlernen! VSCode-Erste-Schritte-Leitfaden: Ein Muss für Anfänger, um die Verwendungsfähigkeiten schnell zu erlernen! Mar 26, 2024 am 08:21 AM

VSCode (Visual Studio Code) ist ein von Microsoft entwickelter Open-Source-Code-Editor. Er verfügt über leistungsstarke Funktionen und umfangreiche Plug-in-Unterstützung, was ihn zu einem der bevorzugten Tools für Entwickler macht. Dieser Artikel bietet eine Einführung für Anfänger, die ihnen hilft, schnell die Fähigkeiten im Umgang mit VSCode zu erlernen. In diesem Artikel stellen wir die Installation von VSCode, grundlegende Bearbeitungsvorgänge, Tastenkombinationen, Plug-In-Installation usw. vor und stellen den Lesern spezifische Codebeispiele zur Verfügung. 1. Installieren Sie zuerst VSCode, wir brauchen

Enthüllte Win11-Tricks: So umgehen Sie die Anmeldung bei einem Microsoft-Konto Enthüllte Win11-Tricks: So umgehen Sie die Anmeldung bei einem Microsoft-Konto Mar 27, 2024 pm 07:57 PM

Win11-Tricks aufgedeckt: So umgehen Sie die Anmeldung bei einem Microsoft-Konto. Vor kurzem hat Microsoft ein neues Betriebssystem Windows11 auf den Markt gebracht, das große Aufmerksamkeit erregt hat. Im Vergleich zu früheren Versionen hat Windows 11 viele neue Anpassungen in Bezug auf das Interface-Design und funktionale Verbesserungen vorgenommen, aber es hat auch einige Kontroversen ausgelöst. Der auffälligste Punkt ist, dass es Benutzer dazu zwingt, sich mit einem Microsoft-Konto am System anzumelden . Einige Benutzer sind möglicherweise eher daran gewöhnt, sich mit einem lokalen Konto anzumelden, und sind nicht bereit, ihre persönlichen Daten an ein Microsoft-Konto zu binden.

PHP-Programmierkenntnisse: So springen Sie innerhalb von 3 Sekunden zur Webseite PHP-Programmierkenntnisse: So springen Sie innerhalb von 3 Sekunden zur Webseite Mar 24, 2024 am 09:18 AM

Titel: PHP-Programmiertipps: So springen Sie innerhalb von 3 Sekunden zu einer Webseite. Bei der Webentwicklung stoßen wir häufig auf Situationen, in denen wir innerhalb einer bestimmten Zeitspanne automatisch zu einer anderen Seite springen müssen. In diesem Artikel wird erläutert, wie Sie mit PHP Programmiertechniken implementieren, um innerhalb von 3 Sekunden zu einer Seite zu springen, und spezifische Codebeispiele bereitstellen. Zunächst wird das Grundprinzip des Seitensprungs über das Standortfeld im HTTP-Antwortheader realisiert. Durch Setzen dieses Feldes kann der Browser automatisch zur angegebenen Seite springen. Nachfolgend finden Sie ein einfaches Beispiel, das die Verwendung von P demonstriert

Tipps zur Verwendung von Laravel-Formularklassen: Möglichkeiten zur Verbesserung der Effizienz Tipps zur Verwendung von Laravel-Formularklassen: Möglichkeiten zur Verbesserung der Effizienz Mar 11, 2024 pm 12:51 PM

Formulare sind ein wesentlicher Bestandteil beim Schreiben einer Website oder Bewerbung. Laravel bietet als beliebtes PHP-Framework umfangreiche und leistungsstarke Formularklassen, die die Formularverarbeitung einfacher und effizienter machen. In diesem Artikel werden einige Tipps zur Verwendung von Laravel-Formularklassen vorgestellt, die Ihnen dabei helfen, die Entwicklungseffizienz zu verbessern. Im Folgenden wird anhand spezifischer Codebeispiele ausführlich erläutert. Erstellen eines Formulars Um ein Formular in Laravel zu erstellen, müssen Sie zunächst das entsprechende HTML-Formular in die Ansicht schreiben. Wenn Sie mit Formularen arbeiten, können Sie Laravel verwenden

Vertieftes Verständnis der Funktions-Refactoring-Techniken in der Go-Sprache Vertieftes Verständnis der Funktions-Refactoring-Techniken in der Go-Sprache Mar 28, 2024 pm 03:05 PM

Bei der Entwicklung von Go-Sprachprogrammen sind Fähigkeiten zur Funktionsrekonstruktion ein sehr wichtiger Teil. Durch die Optimierung und Umgestaltung von Funktionen können Sie nicht nur die Codequalität und Wartbarkeit verbessern, sondern auch die Programmleistung und Lesbarkeit verbessern. Dieser Artikel befasst sich mit den Funktionsrekonstruktionstechniken in der Go-Sprache, kombiniert mit spezifischen Codebeispielen, um den Lesern zu helfen, diese Techniken besser zu verstehen und anzuwenden. 1. Codebeispiel 1: Extrahieren Sie doppelte Codefragmente. In der tatsächlichen Entwicklung stoßen wir häufig auf wiederverwendete Codefragmente. Zu diesem Zeitpunkt können wir das Extrahieren des wiederholten Codes als unabhängige Funktion in Betracht ziehen

See all articles