2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Liken + Folgen + Sammeln = Gelernt
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.
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
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.
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.
- Password:
- 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.
- This password is too common.
- This password is entirely numeric.
- Bypass password validation and create user anyway? [y/N]: y
- 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.
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
von django.contrib importiere Admin von account.models importiere Benutzer
class UserAdmin(admin.ModelAdmin): # Anzuzeigender Inhalt list_display = ['username', 'email']
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.
Klicken Sie auf „Benutzertabellen“, um die Informationen zu dieser Tabelle in der Datenbank anzuzeigen.
Sie können auf die Schaltfläche „Hinzufügen“ klicken, um dieser Tabelle neue Daten hinzuzufügen.
Sie können angegebene Daten auch ändern und löschen.
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
von django.contrib importiere admin von blog.models importiere Artikel
class ArticleAdmin(admin.ModelAdmin): # Anzuzeigender Inhalt list_display = ['id', 'title']
admin.site.register(Artikel, ArtikelAdmin) ```
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.
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.
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“。
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.
Ö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
LANGUAGE_CODE = "zh-hans"
ZEITZONE = 'Asien/Shanghai' ```
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.
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
von django.apps importiere AppConfig
Klasse AccountConfig(AppConfig): StandardAutofield = 'django.db.models.BigAutoField' name = 'account' verbose_name = 'User Management' ```
blog
Das gleiche gilt.
```Python
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.
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
aus django.db Modelle importieren
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)
- class Meta:
- # 自定义表名
- db_table = 'user'
- # 表别名
- verbose_name = '用户表'
- verbose_name_plural = '用户表'
```
Aktualisieren Sie die Seite und Sie werden sehen, dass das „s“ nach „Benutzertabelle“ verschwunden ist.
blog
Gleicher Grund.
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.
Wir sollten den Benutzernamen anzeigen.
Lassen Sie es uns zuerst ändern blog
Die anzuzeigenden Felder.
```Python
von django.contrib importiere admin von blog.models importiere Artikel
def get_author(obj): returniere obj.user.username
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'
admin.site.register(Artikel, ArtikelAdmin) ```
Ordnen Sie den Fremdschlüssel der Methode get_author zu username
Die Felder werden angezeigt.
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
aus django.db Modelle importieren
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)
- class Meta:
- # 自定义表名
- db_table = 'user'
- # 表别名
- verbose_name = '用户表'
- verbose_name_plural = '用户表'
-
- # 返回用户名
- def __str__(self):
- 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.
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.
```Python
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.
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
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.
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.
Liken + Folgen + Sammeln = Gelernt