Maison > développement back-end > Tutoriel Python > Méthode d'implémentation du système d'adaptation de personnages de livres Django en python (backend)

Méthode d'implémentation du système d'adaptation de personnages de livres Django en python (backend)

不言
Libérer: 2018-11-15 15:18:21
avant
2941 Les gens l'ont consulté

Le contenu de cet article concerne la méthode d'implémentation (backend) du système d'adaptation des personnages du livre Django en python. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.

Django

Il existe de nombreux frameworks web différents sous Python. Django est le plus représentatif des joueurs poids lourds. De nombreux sites Web et applications à succès sont basés sur Django.
Django est un framework d'application Web open source écrit en Python.

Bases de Django

Version : Django 1.10
Utilisez Pycharm pour créer un nouveau projet Django, nommé FirstDjango
Il existe un répertoire FirstDjango, un répertoire de modèles , et le fichier manage.py
Exécutez le fichier manage.py similaire à la ligne de commande flask_script

 python manage.py makemigrations   #相当于初始化数据库表
 python manage.py migrate #相当于数据库迁移命令,这里的数据库存储都是放在db.sqlite3文件里
 python manage.py createsuperuser #创建超级用户,生成db.sqlite3文件
 python manage.py runserver 7899 #默认端口号:8000
Copier après la connexion

Visitez http://127.0.0.1:7899/, vous pouvez voir la page Cela a fonctionné, mais l'application n'a pas encore été exécutée

Méthode dimplémentation du système dadaptation de personnages de livres Django en python (backend)

Modifier la langue et le fuseau horaire (setting.py)

# LANGUAGE_CODE = 'en-us'
LANGUAGE_CODE = 'zh-hans'

# TIME_ZONE = 'UTC'
TIME_ZONE = 'Asia/Shanghai'
Copier après la connexion

Django est différent de Flask en ce sens vous n'avez pas besoin de redémarrer le programme à chaque fois que vous modifiez le code.

http://127.0.0.1:7899/admin/, vous pouvez accéder à la gestion en arrière-plan
Ici, vous pouvez ajouter de nouveaux utilisateurs et de nouveaux groupes. Les nouveaux utilisateurs et groupes peuvent se voir attribuer des droits, mais ils ne le peuvent pas. exécuter la fonction d'autorisation de distribution du super utilisateur
Exemple : Ajouter 'Peut ajouter un groupe' au groupe add_group '
Créer un utilisateur normal, appartenir au groupe add_group, vérifier le statut du personnel (indiquer si l'utilisateur peut se connecter à cette gestion site).
Lorsque vous vous connectez à la gestion backend en tant qu'utilisateur normal, vous n'aurez que la possibilité d'ajouter un groupe.

Méthode dimplémentation du système dadaptation de personnages de livres Django en python (backend)

Créez votre propre application (app) -- livre

Entrée du terminal

python manage.py startapp book
Copier après la connexion

Le livre/répertoire sera généré dans le projet en cours

Après avoir créé votre propre fichier d'application, enregistrez d'abord l'application settings.py dans le projet

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'book',
]
Copier après la connexion

Commencez à écrire la structure de la base de données ( model.py )

Déterminez d'abord quelles sont les tables de la base de données : livres, personnages.
Déterminez ensuite la structure de chaque tableau. Les attributs du livre sont : l'identifiant, le titre, l'heure de publication, le résumé, la couverture. Attributs du personnage : identifiant, nom, sexe, introduction et livre.
Déterminez enfin la relation entre les tables : il y a plusieurs caractères dans un livre, écrivez des clés étrangères dans la table de la base de données de caractères

Dans la structure du framework Django, il n'est pas nécessaire d'écrire des références inverses comme flask

# book/models.py
from django.db import models

# Create your models here.
class BookInfo(models.Model):
    # 这里不需要写id,Django框架默认会生成id,并作为主键pk
    btitle = models.CharField(max_length=100,unique=True,verbose_name='书籍标题')     # 表示在后台管理中这一栏的中文显示
    bpub_time  = models.DateField(verbose_name='出版时间')
    # bcontent = models.TextField(default='摘要',verbose_name='书籍摘要')
    # bimg = models.ImageField(default=None,upload_to='static/uploads/')
    class Meta:    ##表示这个数据库表在后台中的中文显示,因为英语区分单复数,所以需要写上单复数的中文显示
        verbose_name = '书籍信息'
        verbose_name_plural = '书籍信息'
    def __str__(self):
        return '%s' %(self.btitle)

class HeroInfo(models.Model):
    hname = models.CharField(max_length=50,verbose_name='人物姓名')
    hgender = models.BooleanField(default=True,verbose_name='人物性别')
    # 任务简介
    hcontent = models.TextField(verbose_name='人物简介')
    # 多的一端写外键
    hbook = models.ForeignKey(BookInfo,verbose_name='所属书籍')
    @property
    def gender(self):
        if self.hgender:
            return '男'
        else:
            return '女'
    class Meta:
        verbose_name = '人物信息'
        verbose_name_plural = '人物信息'
    def __str__(self):
        return '%s' %(self.hname)
Copier après la connexion

Utiliser la base de données de type de fichier sqlite3

Django utilise la base de données sqlit3 par défaut, qui peut être consultée dans le fichier settings.py du projet

DATABASES = {
    'default': {
         'ENGINE': 'django.db.backends.sqlite3',
         'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
     }
}
Copier après la connexion

Après avoir écrit les modèles. py du livre d'application, nous avons commencé à créer la base de données

python manage.py makemigrations   
python manage.py migrate
Copier après la connexion

Comment entrer dans la table de la base de données sqlite3

python manage.py shell    #打开类似数据库交互命令的窗口
Copier après la connexion

Ajout de données à la base de données

>>> from book.models import BookInfo,HeroInfo
>>> from datetime import date
>>> book1 = BookInfo(btitle='小王子',bpub_time=date(1942,5,13))
>>> book1.save()
Copier après la connexion
2. Recherche


>>> BookInfo.objects.all()
<queryset>]></queryset>
Copier après la connexion
Recherche basée sur des informations spécifiées

>>> book = BookInfo.objects.get(id=1)
>>> book.btitle
'小王子'
Copier après la connexion
3. Modification des données de la base de données


>>> book1.btitle = '安徒生童话'
>>> book1.save()
>>> book = BookInfo.objects.get(id=1)
>>> book.btitle
'安徒生童话'
Copier après la connexion
4. Suppression des données de la base de données


>>> book = BookInfo.objects.get(id=1)
>>> book.delete()
(1, {'book.HeroInfo': 0, 'book.BookInfo': 1})
>>> book = BookInfo.objects.all()
>>>
Copier après la connexion
5. Associations entre les tables de la base de données

Ensuite, créez les informations de la table de la base de données sans clés étrangères

>>> book1 = BookInfo(btitle='小王子',bpub_time=date(1942,5,13))
>>> book2 = BookInfo(btitle='睡美人',bpub_time=date(1952,6,29))
>>> book1.save()
>>> book2.save()
Copier après la connexion
, créez la base de données où se trouvent les clés étrangères Informations sur le tableau

1. Créez des caractères directement selon la structure de la table de données

>>> hero1 = HeroInfo(hname='小王子',hgender=True,hcontent='小王子没有被成人那骗人的世界所征服',hbook=book1)
>>> hero1 = HeroInfo(hname='玫瑰花',hgender=False,hcontent='玫瑰花的虚荣心伤害了小王子对她的感情',hbook=book1)
>>> hero1.save()
>>> hero2.save()
Copier après la connexion
2.Ajoutez des caractères en fonction des informations sur les caractères correspondant aux livres connus


Requête Il existe deux manières d'obtenir des informations sur les caractères
>>> book1 = BookInfo.objects.get(id=2)
>>> book1.heroinfo_set.all()
<queryset>, <heroinfo:>]>
>>> book1.heroinfo_set.create(hname='小狐狸',hgender=True,hcontent='肉眼看不见事务的本质,只有用心灵才能洞察一切')
<heroinfo:></heroinfo:></heroinfo:></queryset>
Copier après la connexion
1. Rechercher directement en fonction de la table de la base de données de caractères


2. object
>>> HeroInfo.objects.all()
<queryset>, <heroinfo:>]></heroinfo:></queryset>
Copier après la connexion


>>> book1 = BookInfo.objects.get(id=2)
>>> book1.heroinfo_set.all()
<queryset>, <heroinfo:>]>
>>></heroinfo:></queryset>
Copier après la connexion
Utilisez la base de données de type de fichier mysql

pour modifier la configuration de la base de données dans le fichier settings.py

Si vous initialisez directement la base de données ici, une erreur sera signalée
# Database
# https://docs.djangoproject.com/en/1.10/ref/settings/#databases

DATABASES = {
    'default': {
        # 'ENGINE': 'django.db.backends.sqlite3',
        # 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'firstdjango',    #数据库名称,若没有的话,先在数据库中建立
        'USER': 'root',
        'PASSWORD': 'sheen',
        'HOST': 'localhost',
        'PORT': '3306',
    }
}
Copier après la connexion


Vous devez définir le fichier __init__.py du projet
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named 'MySQLdb'
Copier après la connexion


Exécutez la commande dans le terminal et vous pourrez afficher toutes les informations de la table dans la base de données mysql
# \PycharmProjects\FristDjango\FristDjango\__init__.py
import pymysql
pymysql.install_as_MySQLdb()
Copier après la connexion

Le fonctionnement de la base de données sur le site
 python manage.py makemigrations  
 python manage.py migrate
Copier après la connexion

Il est particulièrement gênant de faire fonctionner la base de données via commandes. Nous implémentons le fonctionnement de la base de données via la page Web de gestion en arrière-plan

Tout d'abord, vous devez enregistrer la table de la base de données dans le fichier admin.py


#book/admin
from django.contrib import admin
from book.models import BookInfo,HeroInfo
# Register your models here.
admin.site.register(BookInfo)
admin.site.register(HeroInfo)
Copier après la connexion

Méthode dimplémentation du système dadaptation de personnages de livres Django en python (backend)Les informations sur le livre n'affichent que les titres et les informations sur les personnages n'affichent que les noms, ce qui n'est pas propice à la visualisation.

#book/admin.py
from django.contrib import admin
from book.models import BookInfo,HeroInfo
# Register your models here.
class BookInfoAdmin(admin.ModelAdmin):
    list_display = ['btitle','bpub_time']
class HeroInfoAdmin(admin.ModelAdmin):
    list_display = ['hname','hgender','hcontent','hbook']   #显示栏
    list_filter = ['hbook'] #过滤器
    search_fields = ['hname','hbook']   #搜索栏
    list_per_page = 2   #每页显示多少条数据
admin.site.register(BookInfo,BookInfoAdmin)
admin.site.register(HeroInfo,HeroInfoAdmin)
Copier après la connexion

Méthode dimplémentation du système dadaptation de personnages de livres Django en python (backend)Comment ajouter des caractères directement à. la table du livre, effet d'affichage de la page Web : Si vous accédez à la page de détails du livre, vous pouvez ajouter des personnages directement

Ajouter la classe HeroInline et modifier la classe BookInfoAdmin


# book/admin.py
class HeroInline(admin.TabularInline):
    model = HeroInfo
    extra = 2   #每次增加两个添加人物的表单
    

class BookInfoAdmin(admin.ModelAdmin):
    list_display = ['btitle','bpub_time']
    inlines = [HeroInline]
Copier après la connexion

Méthode dimplémentation du système dadaptation de personnages de livres Django en python (backend)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:segmentfault.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal