Technologieaustausch

„Django“ kommt mit einem eigenen Backend

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina


Thema: Smartblue

Einleitung zu diesem Artikel

Liken + Folgen + Sammeln = Gelernt

00.png

Ich habe im vorherigen Artikel darüber gesprochen Django arbeitenMySQL Die Methode erklärt, wie man ein Modell erstellt und wie man die Datenbank hinzufügt, löscht, ändert und abfragt. Sie müssen jedoch jedes Mal Code schreiben, wenn Sie die Daten ändern, was etwas mühsam ist.

Gibt es einen einfacheren Weg?

Einige einige,Django Tatsächlich verfügt es über ein Backend, eine grafische Oberfläche, auf der Sie problemlos verschiedene Dateninhalte verwalten können.

Lassen Sie uns als Nächstes darüber sprechen, wie Sie dieses integrierte Backend verwenden.

Konfigurieren Sie die Hintergrund-Routing-Adresse

Tatsächlich erschaffen Django Während des Projekts haben wir die Routing-Adresse bereits im Hintergrund für uns konfiguriert.

Wenn Sie meinem vorherigen Artikel Schritt für Schritt folgen, wird das Hintergrundrouting möglicherweise gelöscht. Es spielt keine Rolle, erfinden Sie es einfach.

Öffnen Sie das Projekt urls.py Datei gefundenurlpatterns Diese Variable wird zum Ausfüllen des Hintergrundroutings verwendet.

```Python

Die Routing-Datei des urls.py-Projekts

von django.urls importiere Pfad von blog.views importiere blogIndex

urlpatterns = [ # Andere Routen werden weggelassen # Der folgende Satz ist der Routing-Pfad für die Konfiguration des Hintergrunds ('admin/', admin.site.urls) ] ```

Nachdem die Konfiguration abgeschlossen ist, starten Sie das Projekt und öffnen Sie es im Browser http://127.0.0.1:8000/admin/ Im Hintergrund sehen Sie die Anmeldeseite.

01.png

Erstellen Sie ein Administratorkonto

Wenn eine Anmeldeseite vorhanden ist, müssen Sie über ein entsprechendes Konto verfügen, um sich anzumelden.

Daher müssen wir zuerst ein Super-Management-Konto erstellen.

Öffnen Sie das Terminal, geben Sie das Projektverzeichnis ein und geben Sie den folgenden Befehl ein, um ein Superverwaltungskonto zu erstellen.

python manage.py createsuperuser

Anschließend sendet Ihnen das Terminal diese Informationszeile zurück und fordert Sie auf, den Super-Management-Benutzernamen (Konto) einzugeben.

Username (leave blank to use 'xxx'): admin

„xxx“ hier ist mein Computername, nach dem Doppelpunkt können Sie das Super-Management-Konto eingeben.Was ich hier eingegeben habe istadmin

Nach Eingabe Ihres Benutzernamens werden Sie weiterhin aufgefordert, Ihre E-Mail-Adresse einzugeben.

Email address: 123@qq.com

Nach Eingabe Ihrer E-Mail-Adresse werden Sie aufgefordert, Ihr Passwort zweimal einzugeben.

  1. Password:
  2. Password (again):

Das Passwort, das ich hier eingebe, lautet 12345678, es erinnert mich geschickt an Passwörter, die zu häufig vorkommen, aber ich tippe y und bleibe bei solchen einfachen Passwörtern.

  1. This password is too common.
  2. This password is entirely numeric.
  3. Bypass password validation and create user anyway? [y/N]: y
  4. Superuser created successfully.

Sehen Superuser created successfully. Dieser Satz bedeutet, dass das Konto erfolgreich erstellt wurde.

Jetzt im Browser öffnen http://127.0.0.1:8000/admin/, Kontoeingabe admin, Passworteingabe 12345678 Sie können sich erfolgreich anmelden.

02.png

Hintergrund der Modellassoziation

Wir haben zuvor Code zum Betreiben der Datenbank verwendet, was nicht so praktisch ist.

Django Bietet uns die Möglichkeit, das Anwendungsmodell an den Hintergrund zu binden, sodass wir Daten direkt in der Hintergrundschnittstelle bearbeiten können.

Erstellt aus dem vorherigen Artikel account Bewerben Sie sich als Beispiel.

existieren account in der Bewerbung gefundenadmin.py Datei, schreiben Sie den folgenden Code.

```Python

Konto/admin.py

von django.contrib importiere Admin von account.models importiere Benutzer

class UserAdmin(admin.ModelAdmin): # Anzuzeigender Inhalt list_display = ['username', 'email']

Binden Sie das Benutzermodell an UserAdmin

admin.site.register(Benutzer, BenutzerAdmin) ```

Muss hier zuerst vorgestellt werden admin UndUser, weil wir es wollen account Das Anwendungsmodell ist mit dem Backend verknüpft.

Erstellen Sie eine Datei mit dem Namen UserAdmin Klasse, schreibt es hineinlist_display = ['username', 'email'] , was bedeutet, dass es auf der Hintergrundseite angezeigt wirdusername Undemail diese beiden Felder.

zu guter Letzt admin.site.register(User, UserAdmin) meint dasUser Das Modell und das Backend sind miteinander verbunden.

Führen Sie das Projekt aus und öffnen Sie es http://127.0.0.1:8000/admin/ Wenn Sie sich anmelden, können Sie das Modell sehen, das Sie gerade gebunden haben.

03.png

Klicken Sie auf „Benutzertabellen“, um die Informationen zu dieser Tabelle in der Datenbank anzuzeigen.

04.png

Sie können auf die Schaltfläche „Hinzufügen“ klicken, um dieser Tabelle neue Daten hinzuzufügen.

05.png

Sie können angegebene Daten auch ändern und löschen.

06.png

Die geänderten Daten auf der Hintergrundseite wirken sich direkt auf die Daten in der Datenbank aus.

Auf die gleiche Weise ausgedrückt blog Das Anwendungsmodell ist mit dem Backend verknüpft. Der Vorgang ist hier derselbe wie zuvor, daher werde ich ihn nicht noch einmal erklären.

```Python

blog/admin.py

von django.contrib importiere admin von blog.models importiere Artikel

Melden Sie Ihre Modelle hier an.

class ArticleAdmin(admin.ModelAdmin): # Anzuzeigender Inhalt list_display = ['id', 'title']

Binden Sie das Benutzermodell an UserAdmin

admin.site.register(Artikel, ArtikelAdmin) ```

07.png

Lassen Sie uns einen Artikel erstellen und einen Blick darauf werfen.

Klicken Sie neben „Artikelinformationstabellen“ auf die Schaltfläche „Hinzufügen“ und geben Sie den folgenden Inhalt ein.

08.png

Klicken SAVE Nach Drücken der Schaltfläche werden die Daten in die Datenbank geschrieben. Kehren Sie zur Listenseite der „Artikelinformationstabellen“ zurück, um die gerade geschriebenen Daten anzuzeigen.

09.png

Wenn Sie sich über den Inhalt des gesamten Projekts nicht sicher sind, können Sie sich noch einmal ansehen, was ich zusammengestellt habe„Django-Kolumne“

Grundkonfiguration des Backends

Bei den vorherigen Vorgängen sind aufmerksamen Mitarbeitern möglicherweise einige Probleme aufgefallen, z. B. warum ist die Benutzeroberfläche auf Englisch? Warum steht nach dem Tabellennamen ein „s“?Warum ist das optionale Benutzerfeld beim Erstellen eines Artikels nicht der Benutzername, sondernUser object(1)

Als nächstes werden wir diese Probleme einzeln lösen.

Zeitzone und Sprache einstellen

Öffnen Sie das Projekt settings.py Datei gefundenLANGUAGE_CODE , setzen Sie den Wert auf'zh-hans' .und dann findenTIME_ZONE stellen Sie es einAsia/Shanghai

```Python

Einstellungen.py

Sprache

LANGUAGE_CODE = "zh-hans"

Zeitzone

ZEITZONE = 'Asien/Shanghai' ```

10.png

Ändern Sie den Spaltennamen in Chinesisch

Aber zu diesem Zeitpunkt ACCOUNT UndBLOG Immer noch auf Englisch, hierDjango Es kann nicht direkt ins Chinesische übersetzt werden. Sie müssen Aliase für diese beiden Anwendungen konfigurieren.

11.png

Die Konfiguration ist für jede Anwendung individuell apps.py Datei, durchverbose_name Variable zum Anpassen des Spaltennamens.

von account Bewerben Sie sich als Beispiel.

```Python

Konto/apps.py

von django.apps importiere AppConfig

Klasse AccountConfig(AppConfig): StandardAutofield = 'django.db.models.BigAutoField' name = 'account' verbose_name = 'User Management' ```

blog Das gleiche gilt.

```Python

blog/apps.py

von django.apps importiere AppConfig

Klasse BlogConfig(AppConfig): StandardAutofield = 'django.db.models.BigAutoField' name = 'blog' verbose_name = 'Article Management' ```

Aktualisieren Sie zu diesem Zeitpunkt die Seite und Sie werden sehen, dass der Spaltenname geändert wurde.

12.png

Pluralform streichen

Das „s“ nach dem Tabellennamen lautet Django Um dieses „s“ zu löschen, müssen Sie auch den Alias ​​der Tabelle konfigurieren.

In der Modelldatei jeder Anwendung (models.py) konfiguriert in Meta informativverbose_name_plural

von account Bewerben Sie sich als Beispiel.

```Python

Konto/Modelle.py

aus django.db Modelle importieren

Erstellen Sie eine Benutzertabelle

Klasse Benutzer (Modelle.Modell): ID = Modelle.AutoField (primärkey=True) # username = models.CharField('username', maxlength=30, null=True, blank=True, unique=True) # Passwortpasswort = models.CharField('password', max_length=30) # E-Mail email = models.EmailField('Email', unique=True, null= Wahr, leer=Wahr)

  1. class Meta:
  2. # 自定义表名
  3. db_table = 'user'
  4. # 表别名
  5. verbose_name = '用户表'
  6. verbose_name_plural = '用户表'

```

Aktualisieren Sie die Seite und Sie werden sehen, dass das „s“ nach „Benutzertabelle“ verschwunden ist.

13.png

blog Gleicher Grund.

Fremdschlüsselfelder anzeigen

Wenn wir einen Artikel hinzufügen, müssen wir den Autor des Artikels eingeben und auswählen. Der Autor der Artikeltabelle ist mit der Benutzertabelle verknüpft.

Beim Hinzufügen eines Autors wird auf der Seite direkt der Name „Benutzerobjekt“ angezeigt. Wenn die Anzahl der Benutzer steigt, können wir nicht erkennen, wer wer ist.

14.png

Wir sollten den Benutzernamen anzeigen.

Lassen Sie es uns zuerst ändern blog Die anzuzeigenden Felder.

```Python

blog/admin.py

von django.contrib importiere admin von blog.models importiere Artikel

Holen Sie sich den Autor

Dieses Objekt wird zum Empfangen von Artikelinstanzen verwendet

def get_author(obj): returniere obj.user.username

Melden Sie Ihre Modelle hier an.

class ArticleAdmin(admin.ModelAdmin): # Anzuzeigender Inhalt # Sie können get hier verwenden Der Autor wird durch den Benutzernamen ersetzt. Es ist nicht erforderlich, hier einfache Anführungszeichen oder Klammern hinzuzufügen. # Django verwendet Liste Bei der Anzeige wird standardmäßig ein Parameter an die Methode übergeben. ListeAnzeige = ['id', erhaltenAutor, 'Titel', 'Inhalt']

erhaltenAutor.kurzBeschreibung = 'Autor'

Binden Sie das Benutzermodell an UserAdmin

admin.site.register(Artikel, ArtikelAdmin) ```

Ordnen Sie den Fremdschlüssel der Methode get_author zu username Die Felder werden angezeigt.

15.png

An dieser Stelle können wir sehen, wer der Autor dieses Artikels ist. Wir müssen aber auch den Benutzernamen auf der Bearbeitungsseite anzeigen.

Muss zu diesem Zeitpunkt geändert werden User Nur Models reichen aus.

```Python

Konto/Modelle.py

aus django.db Modelle importieren

Erstellen Sie eine Benutzertabelle

Klasse Benutzer (Modelle.Modell): ID = Modelle.AutoField (primärkey=True) # username = models.CharField('username', maxlength=30, null=True, blank=True, unique=True) # Passwortpasswort = models.CharField('password', max_length=30) # E-Mail email = models.EmailField('Email', unique=True, null= Wahr, leer=Wahr)

  1. class Meta:
  2. # 自定义表名
  3. db_table = 'user'
  4. # 表别名
  5. verbose_name = '用户表'
  6. verbose_name_plural = '用户表'
  7. # 返回用户名
  8. def __str__(self):
  9. return self.username

```

existieren account/models.py Am Ende hinzufügen__str__ Methode, Rückkehrusername

Zu diesem Zeitpunkt ist der Benutzername auf der Bearbeitungsseite der Artikelinformationen zu sehen.

16.png

Benutzerdefinierte bearbeitbare Sprunglinks

Wenn Sie in der Artikelverwaltungsseite einen Artikel bearbeiten möchten, können Sie nur auf das Feld „ID“ klicken, um zur Bearbeitungsseite zu springen.Wenn Sie durch Klicken auf andere Felder zur Bearbeitungsseite springen möchten, müssen Sie diese manuell konfigurieren.blog/admin.py Ich möchte beispielsweise auf „TITEL“ klicken, um zur Bearbeitungsseite zu springen.

17.png

```Python

blog/admin.py

Lassen Sie etwas Code weg

class ArticleAdmin(admin.ModelAdmin): # Liste der anzuzeigenden InhalteAnzeige = ['id', erhaltenAutor, 'Titel', 'Inhalt'] # überspringbare FeldlisteAnzeigelinks = ['id', 'title'] # Etwas Code weglassen```

Ich bin hier ArticleAdmin hinzugefügtlist_display_links = ['id', 'title'], was auf einen Klick hinweist id Undtitle Sie können zur Bearbeitungsseite springen.

schreibgeschütztes Attribut

Beim Bearbeiten von Inhalten möchten wir nicht, dass einige Felder geändert werden können. Beispielsweise kann die Blog-ID nicht geändert werden.

zulässig blog/admin.py Hinzufügenreadonly_fields Gibt Felder an, die nicht geändert werden können.

```Python

blog/admin.py

Lassen Sie etwas Code weg

class ArticleAdmin(admin.ModelAdmin): # Schreibgeschütztes Attribut readonly_fields = ['id'] # Etwas Code weglassen````

Bei der Bearbeitung zu diesem Zeitpunkt kann der Wert des ID-Felds nicht geändert werden.

18.png


Das ist alles für diesen Artikel. Im nächsten Artikel werde ich auf der Startseite vorstellen, wie die Informationen in die Datenbank geladen werden.

IMG_8982.GIF

Liken + Folgen + Sammeln = Gelernt