Partage de technologie

"Django" est livré avec son propre backend

2024-07-12

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


thème: smartblue

Introduction à cet article

J'aime + Suivre + Collecter = Appris

00.png

J'en ai parlé dans l'article précédent Django fonctionnerMySQL La méthode explique comment créer un modèle et comment ajouter, supprimer, modifier et interroger la base de données. Mais vous devez écrire du code à chaque fois que vous modifiez les données, ce qui est quelque peu gênant.

Existe-t-il un moyen plus simple ?

Certains, certains,Django En fait, il est livré avec un backend, qui est une interface graphique, et vous pouvez facilement y exploiter divers contenus de données.

Voyons ensuite comment utiliser ce backend intégré.

Configurer l'adresse de routage en arrière-plan

En fait, créer Django Au cours du projet, nous avons déjà configuré pour nous l'adresse de routage en arrière-plan.

Si vous suivez mon article précédent étape par étape, le routage en arrière-plan risque d'être supprimé. Ce n'est pas grave, inventez-le.

Ouvrir le projet urls.py fichier trouvéurlpatterns Cette variable permet de renseigner le routage en arrière-plan.

```python

Le fichier de routage du projet urls.py

depuis django.urls importer le chemin depuis blog.views importer blogIndex

urlpatterns = [ # Les autres routes sont omises # La phrase suivante est le chemin de routage pour configurer l'arrière-plan ('admin/', admin.site.urls) ] ```

Une fois la configuration terminée, démarrez le projet et ouvrez-le dans le navigateur http://127.0.0.1:8000/admin/ Vous pouvez voir la page de connexion en arrière-plan.

01.png

Créer un compte administrateur

S'il existe une page de connexion, vous devez disposer d'un compte correspondant pour vous connecter.

Nous devons donc d’abord créer un super compte de gestion.

Ouvrez le terminal, entrez dans le répertoire du projet et entrez la commande suivante pour créer un compte de super gestion.

python manage.py createsuperuser

Ensuite, le terminal vous renverra cette ligne d'information, vous demandant de saisir le nom d'utilisateur de super gestion (compte)

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

'xxx' voici le nom de mon ordinateur, vous pouvez saisir le compte de super gestion après les deux points.Ce que j'ai entré ici estadmin

Après avoir saisi votre nom d'utilisateur, il continuera à vous demander de saisir votre adresse e-mail.

Email address: 123@qq.com

Après avoir saisi votre adresse e-mail, il vous sera demandé de saisir deux fois votre mot de passe.

  1. Password:
  2. Password (again):

Le mot de passe que j'entre ici est 12345678, cela me rappelle intelligemment des mots de passe trop courants, mais je tape y et je m'en tiens à des mots de passe aussi simples.

  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.

Voir Superuser created successfully. Cette phrase signifie que le compte a été créé avec succès.

Maintenant ouvert dans le navigateur http://127.0.0.1:8000/admin/, saisie du compte admin, saisie du mot de passe 12345678 Vous pouvez vous connecter avec succès.

02.png

Contexte de l'association modèle

Nous avons déjà utilisé du code pour faire fonctionner la base de données, ce qui n'est pas si pratique.

Django Fournit un moyen pour nous de lier le modèle d'application à l'arrière-plan, afin que nous puissions exploiter directement les données dans l'interface d'arrière-plan.

Créé à partir de l'article précédent account Appliquer à titre d'exemple.

exister account trouvé dans l'applicationadmin.py fichier, écrivez le code suivant.

```python

compte/admin.py

depuis django.contrib importer admin depuis account.models importer User

class UserAdmin(admin.ModelAdmin): # Contenu à afficher list_display = ['username', 'email']

Liez le modèle utilisateur à UserAdmin

admin.site.register(Utilisateur, UserAdmin) ```

Doit être présenté ici en premier admin etUser, parce que nous voulons account Le modèle d'application est associé au backend.

Créez un fichier appelé UserAdmin Classe, écris-le dedanslist_display = ['username', 'email'] , c'est-à-dire afficher sur la page d'arrière-planusername etemail ces deux domaines.

enfin admin.site.register(User, UserAdmin) des moyens pourUser Le modèle et le backend sont liés ensemble.

Exécutez le projet et ouvrez http://127.0.0.1:8000/admin/ Et connectez-vous, vous pouvez voir le modèle que vous venez de lier.

03.png

Cliquez sur « Tables utilisateur » pour voir les informations sur cette table dans la base de données.

04.png

Vous pouvez cliquer sur le bouton "Ajouter" pour ajouter de nouvelles données à ce tableau.

05.png

Vous pouvez également modifier et supprimer les données spécifiées.

06.png

Les données modifiées sur la page d'arrière-plan affecteront directement les données de la base de données.

De la même manière, mettez blog Le modèle d'application est associé au backend. Le fonctionnement ici est le même que précédemment, je ne l’expliquerai donc pas à nouveau.

```python

blog/admin.py

depuis django.contrib importer admin depuis blog.models importer Article

Inscrivez vos modèles ici.

class ArticleAdmin(admin.ModelAdmin): # Contenu à afficher list_display = ['id', 'title']

Liez le modèle utilisateur à UserAdmin

admin.site.register(Article, ArticleAdmin) ```

07.png

Créons un article et jetons un œil.

Cliquez sur le bouton Ajouter à côté de « Tableaux d'informations sur les articles » et remplissez le contenu suivant.

08.png

Cliquez sur SAVE Après avoir appuyé sur le bouton, les données sont écrites dans la base de données. Revenez à la page de liste des « Tableaux d'informations sur les articles » pour voir les données qui viennent d'être écrites.

09.png

Si vous n'êtes pas sûr du contenu de l'ensemble du projet, vous pouvez revenir sur ce que j'ai compilé"Chronique Django"

Configuration de base du backend

Lors des opérations précédentes, des travailleurs attentifs ont peut-être remarqué certains problèmes, comme par exemple pourquoi l'interface est en anglais ? Pourquoi y a-t-il un « s » après le nom de la table ?Pourquoi le champ Utilisateur facultatif lors de la création d'un article n'est-il pas le nom d'utilisateur, maisUser object(1)

Nous allons ensuite résoudre ces problèmes un par un.

Définir le fuseau horaire et la langue

Ouvrir le projet settings.py fichier trouvéLANGUAGE_CODE , définissez sa valeur sur'zh-hans' .et puis trouverTIME_ZONE réglez-le surAsia/Shanghai

```python

paramètres.py

langue

CODE_LANGUE = 'zh-hans'

Fuseau horaire

TIME_ZONE = 'Asie/Shanghai' ```

10.png

Changez le nom de la colonne en chinois

Mais à ce moment ACCOUNT etBLOG Toujours en anglais, iciDjango Il ne peut pas être directement traduit en chinois. Vous devez configurer des alias pour ces deux applications.

11.png

La configuration est propre à chaque application apps.py fichier, viaverbose_name Variable pour personnaliser le nom de la colonne.

par account Appliquer à titre d'exemple.

```python

compte/apps.py

depuis django.apps importer AppConfig

classe AccountConfig(AppConfig) : par défautautofield = 'django.db.models.BigAutoField' name = 'account' verbose_name = 'Gestion des utilisateurs' ```

blog La même chose s'applique.

```python

blog/apps.py

depuis django.apps importer AppConfig

classe BlogConfig(AppConfig) : par défautautofield = 'django.db.models.BigAutoField' name = 'blog' verbose_name = 'Gestion des articles' ```

À ce stade, actualisez la page et vous verrez que le nom de la colonne a été modifié.

12.png

supprimer le pluriel

Le "s" après le nom de la table est Django Il est livré avec. Pour supprimer ce "s", vous devez également configurer l'alias de la table.

Dans le fichier modèle de chaque application (models.py) configuré dans Meta informatifverbose_name_plural

par account Appliquer à titre d'exemple.

```python

compte/modeles.py

depuis django.db importer des modèles

Créer une table utilisateur

classe User(models.Model) : id = models.AutoField(primary)key=True) # nom d'utilisateur = models.CharField('nom d'utilisateur', maxlength=30, null=True, blank=True, unique=True) # Mot de passe password = models.CharField('password', max_length=30) # Email email = models.EmailField('Email', unique=True, null= Vrai, vide = Vrai)

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

```

Actualisez la page et vous verrez que le « s » après « User Table » a disparu.

13.png

blog Même raison.

Afficher les champs de clé étrangère

Lorsque nous ajoutons un article, nous devons saisir et sélectionner l'auteur de l'article. L'auteur de la table article est associé à la table utilisateur.

Lors de l'ajout d'un auteur, la page affiche directement le nom "Objet Utilisateur". Si le nombre d'utilisateurs augmente, on ne pourra pas savoir qui est qui.

14.png

Nous devrions afficher le nom d'utilisateur.

Modifions-le d'abord blog Les champs à afficher.

```python

blog/admin.py

depuis django.contrib importer admin depuis blog.models importer Article

Obtenir l'auteur

Cet objet obj est utilisé pour recevoir des instances d'article

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

Inscrivez vos modèles ici.

class ArticleAdmin(admin.ModelAdmin): # Contenu à afficher # Vous pouvez utiliser get here l'auteur est remplacé par le nom d'utilisateur. Il n'est pas nécessaire d'ajouter ici des guillemets simples ou des parenthèses. # Django utilise la liste Lors de l'affichage, un paramètre sera passé à la méthode par défaut. listeaffichage = ['id', obtenir[auteur, 'titre', 'contenu']

obtenirauteur.courtdescription = 'Auteur'

Liez le modèle utilisateur à UserAdmin

admin.site.register(Article, ArticleAdmin) ```

Associer la clé étrangère à la méthode get_author username Les champs s'affichent.

15.png

À ce stade, nous pourrons voir qui est l’auteur de cet article. Mais nous devons également afficher le nom d'utilisateur dans la page d'édition.

Besoin de modifier à ce moment User Seuls les modèles feront l'affaire.

```python

compte/modeles.py

depuis django.db importer des modèles

Créer une table utilisateur

classe User(models.Model) : id = models.AutoField(primary)key=True) # nom d'utilisateur = models.CharField('nom d'utilisateur', maxlength=30, null=True, blank=True, unique=True) # Mot de passe password = models.CharField('password', max_length=30) # Email email = models.EmailField('Email', unique=True, null= Vrai, vide = Vrai)

  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

```

exister account/models.py Ajouter à la fin__str__ méthode, retourusername

À ce stade, le nom d'utilisateur est visible sur la page d'édition des informations sur l'article.

16.png

Liens de saut modifiables personnalisés

Dans la page de gestion des articles, si vous souhaitez modifier un article, vous pouvez uniquement cliquer sur le champ "ID" pour accéder à la page d'édition.Si vous souhaitez accéder à la page d'édition en cliquant sur d'autres champs, vous devez la configurer manuellement.blog/admin.py Par exemple, je souhaite cliquer sur "TITRE" pour accéder à la page d'édition.

17.png

```python

blog/admin.py

Omettre du code

class ArticleAdmin(admin.ModelAdmin): # Liste du contenu à afficheraffichage = ['id', obtenirauteur, 'titre', 'contenu'] # liste de champs évolutifsafficherlinks = ['id', 'title'] # Omettre du code```

Je suis là ArticleAdmin ajouté danslist_display_links = ['id', 'title'], indiquant un clic id ettitle Vous pouvez accéder à la page d'édition.

attribut en lecture seule

Lors de l'édition de contenu, nous ne souhaitons pas que certains champs soient modifiables. Par exemple, l'ID du blog ne peut pas être modifié.

admissible blog/admin.py Ajouter àreadonly_fields Spécifie les champs qui ne peuvent pas être modifiés.

```python

blog/admin.py

Omettre du code

class ArticleAdmin(admin.ModelAdmin): # Attribut en lecture seule readonly_fields = ['id'] # Omettre du code````

Lors de l'édition à ce moment, la valeur du champ id ne peut pas être modifiée.

18.png


C'est tout pour cet article. Dans le prochain article, je présenterai comment charger les informations dans la base de données sur la première page.

IMG_8982.GIF

J'aime + Suivre + Collecter = Appris