2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
J'aime + Suivre + Collecter = Appris
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é.
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
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.
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.
- Password:
- 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.
- This password is too common.
- This password is entirely numeric.
- Bypass password validation and create user anyway? [y/N]: y
- 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.
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
depuis django.contrib importer admin depuis account.models importer User
class UserAdmin(admin.ModelAdmin): # Contenu à afficher list_display = ['username', 'email']
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.
Cliquez sur « Tables utilisateur » pour voir les informations sur cette table dans la base de données.
Vous pouvez cliquer sur le bouton "Ajouter" pour ajouter de nouvelles données à ce tableau.
Vous pouvez également modifier et supprimer les données spécifiées.
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
depuis django.contrib importer admin depuis blog.models importer Article
class ArticleAdmin(admin.ModelAdmin): # Contenu à afficher list_display = ['id', 'title']
admin.site.register(Article, ArticleAdmin) ```
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.
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.
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"。
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.
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
CODE_LANGUE = 'zh-hans'
TIME_ZONE = 'Asie/Shanghai' ```
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.
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
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
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é.
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
depuis django.db importer des modèles
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)
- class Meta:
- # 自定义表名
- db_table = 'user'
- # 表别名
- verbose_name = '用户表'
- verbose_name_plural = '用户表'
```
Actualisez la page et vous verrez que le « s » après « User Table » a disparu.
blog
Même raison.
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.
Nous devrions afficher le nom d'utilisateur.
Modifions-le d'abord blog
Les champs à afficher.
```python
depuis django.contrib importer admin depuis blog.models importer Article
def get_author(obj) : retourne obj.user.username
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'
admin.site.register(Article, ArticleAdmin) ```
Associer la clé étrangère à la méthode get_author username
Les champs s'affichent.
À 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
depuis django.db importer des modèles
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)
- class Meta:
- # 自定义表名
- db_table = 'user'
- # 表别名
- verbose_name = '用户表'
- verbose_name_plural = '用户表'
-
- # 返回用户名
- def __str__(self):
- 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.
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.
```python
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.
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
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.
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.
J'aime + Suivre + Collecter = Appris