Maison  >  Article  >  développement back-end  >  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)

不言
不言avant
2018-11-15 15:18:212882parcourir

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

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'

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

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',
]

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)

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'),
     }
}

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

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

python manage.py shell    #打开类似数据库交互命令的窗口

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()
2. Recherche


>>> BookInfo.objects.all()
<queryset>]></queryset>
Recherche basée sur des informations spécifiées

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


>>> book1.btitle = '安徒生童话'
>>> book1.save()
>>> book = BookInfo.objects.get(id=1)
>>> book.btitle
'安徒生童话'
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()
>>>
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()
, 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()
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>
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>


>>> book1 = BookInfo.objects.get(id=2)
>>> book1.heroinfo_set.all()
<queryset>, <heroinfo:>]>
>>></heroinfo:></queryset>
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',
    }
}


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


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()

Le fonctionnement de la base de données sur le site
 python manage.py makemigrations  
 python manage.py migrate

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)

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)

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]

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer