Maison > Article > développement back-end > Méthode d'implémentation du système d'adaptation de personnages de livres Django en python (backend)
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
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.
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)
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
>>> 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
>>> 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', } }
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named 'MySQLdb'
# \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
#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)
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)
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]
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!