Heim > Artikel > Backend-Entwicklung > Implementierungsmethode des Django-Buchzeichenanpassungssystems in Python (Backend)
Der Inhalt dieses Artikels befasst sich mit der Implementierungsmethode (Backend) des Django-Buchzeichenanpassungssystems. Ich hoffe, dass er für Sie hilfreich ist.
Django
Es gibt viele verschiedene Web-Frameworks unter Python. Django ist der repräsentativste Schwergewichtsspieler. Viele erfolgreiche Websites und Apps basieren auf Django.
Django ist ein in Python geschriebenes Open-Source-Webanwendungs-Framework.
Django-Grundlagen
Version: Django 1.10
Verwenden Sie Pycharm, um ein neues Django-Projekt mit dem Namen FirstDjango zu erstellen
Es gibt ein FirstDjango-Verzeichnis und ein Vorlagenverzeichnis , und manage.py-Datei
Führen Sie die manage.py-Datei ähnlich der flask_script-Befehlszeile aus
python manage.py makemigrations #相当于初始化数据库表 python manage.py migrate #相当于数据库迁移命令,这里的数据库存储都是放在db.sqlite3文件里 python manage.py createsuperuser #创建超级用户,生成db.sqlite3文件 python manage.py runserver 7899 #默认端口号:8000
Besuchen Sie http://127.0.0.1:7899/, Sie können die Seite „Es hat funktioniert“ sehen, aber die APP wurde noch nicht tatsächlich ausgeführt
Sprache und Zeitzone ändern (setting.py)
# LANGUAGE_CODE = 'en-us' LANGUAGE_CODE = 'zh-hans' # TIME_ZONE = 'UTC' TIME_ZONE = 'Asia/Shanghai'
Django unterscheidet sich von Flask dadurch, dass Sie dies nicht tun Sie müssen das Programm jedes Mal neu starten, wenn Sie den Code ändern.
http://127.0.0.1:7899/admin/, Sie können auf die Hintergrundverwaltung zugreifen
Hier können Sie neue Benutzer und neue Gruppen hinzufügen, diese können jedoch keine Rechte erhalten Führen Sie die Verteilungsberechtigungsfunktion des Superbenutzers aus
Beispiel: „Kann Gruppe hinzufügen“ zur Gruppe „add_group“ hinzufügen „
Benutzer normal erstellen, zur Gruppe „add_group“ gehören, den Personalstatus überprüfen (angeben, ob sich der Benutzer bei dieser Verwaltung anmelden kann). Website).
Wenn Sie sich als normaler Benutzer bei der Backend-Verwaltung anmelden, haben Sie nur die Möglichkeit, eine Gruppe hinzuzufügen.
Erstellen Sie Ihre eigene Anwendung (App) -- Buch
Terminaleingabe
python manage.py startapp book
wird Generieren Sie das Buch/Verzeichnis im aktuellen Projekt
Nachdem Sie Ihre eigene Anwendungsdatei erstellt haben, registrieren Sie zunächst die Anwendungseinstellung.py
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'book', ]
und beginnen Sie mit dem Schreiben der Datenbankstruktur (model.py)
Bestimmen Sie zunächst, welche Datenbanktabellen vorhanden sind: Bücher, Charaktere.
Bestimmen Sie dann die Struktur jeder Tabelle. Die Attribute des Buches sind: ID, Titel, Veröffentlichungszeit, Zusammenfassung, Cover. Charakterattribute: ID, Name, Geschlecht, Einführung und Buchzugehörigkeit.
Bestimmen Sie abschließend die Beziehung zwischen Tabellen: Es gibt mehrere Zeichen in einem Buch, schreiben Sie Fremdschlüssel in die Zeichendatenbanktabelle
In der Django-Framework-Struktur ist es nicht erforderlich, umgekehrte Referenzen wie flask zu schreiben
# 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 verwendet standardmäßig die SQLite3-Datenbank, die in der Datei „setting.py“ des Projekts angezeigt werden kann
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), } }
Nach dem Schreiben der models.py-Datei des Anwendungsbuch, wir haben begonnen, eine Datenbank zu erstellen
python manage.py makemigrations python manage.py migrate
So geben Sie die SQLite3-Datenbanktabelle ein
python manage.py shell #打开类似数据库交互命令的窗口
1 Daten zur Datenbank hinzufügen
>>> from book.models import BookInfo,HeroInfo >>> from datetime import date >>> book1 = BookInfo(btitle='小王子',bpub_time=date(1942,5,13)) >>> book1.save()
2 Datenbank
>>> BookInfo.objects.all() <queryset>]></queryset>
Suche basierend auf angegebenen Informationen
>>> book = BookInfo.objects.get(id=1) >>> book.btitle '小王子'
3. Änderung von Datenbankdaten
>>> book1.btitle = '安徒生童话' >>> book1.save() >>> book = BookInfo.objects.get(id=1) >>> book.btitle '安徒生童话'
4. Löschung von Datenbankdaten
>>> book = BookInfo.objects.get(id=1) >>> book.delete() (1, {'book.HeroInfo': 0, 'book.BookInfo': 1}) >>> book = BookInfo.objects.all() >>>
5. Zwischen Datenbanktabellen-Assoziation
Erstellen Sie zunächst die Datenbanktabelleninformationen ohne Fremdschlüssel
>>> book1 = BookInfo(btitle='小王子',bpub_time=date(1942,5,13)) >>> book2 = BookInfo(btitle='睡美人',bpub_time=date(1952,6,29)) >>> book1.save() >>> book2.save()
Erstellen Sie dann die Datenbanktabelleninformationen, in denen sich der Fremdschlüssel befindet
1 das Zeichen direkt gemäß der Datentabellenstruktur
>>> hero1 = HeroInfo(hname='小王子',hgender=True,hcontent='小王子没有被成人那骗人的世界所征服',hbook=book1) >>> hero1 = HeroInfo(hname='玫瑰花',hgender=False,hcontent='玫瑰花的虚荣心伤害了小王子对她的感情',hbook=book1) >>> hero1.save() >>> hero2.save()
2. Fügen Sie Zeichen entsprechend den Charakterinformationen hinzu, die den bekannten Büchern entsprechen
>>> book1 = BookInfo.objects.get(id=2) >>> book1.heroinfo_set.all() <queryset>, <heroinfo:>]> >>> book1.heroinfo_set.create(hname='小狐狸',hgender=True,hcontent='肉眼看不见事务的本质,只有用心灵才能洞察一切') <heroinfo:></heroinfo:></heroinfo:></queryset>
Es gibt zwei Möglichkeiten, Charakterinformationen abzufragen
1. Suchen Sie
>>> HeroInfo.objects.all() <queryset>, <heroinfo:>]></heroinfo:></queryset>
direkt basierend auf der Zeichendatenbanktabelle. 2. Suchen Sie
>>> book1 = BookInfo.objects.get(id=2) >>> book1.heroinfo_set.all() <queryset>, <heroinfo:>]> >>></heroinfo:></queryset>
basierend auf der Beziehung zum Datenobjekt und verwenden Sie die MySQL-Dateitypdatenbank
um die Datenbankkonfiguration in der Datei „setting.py“ zu ändern
# 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', } }
Wenn Sie die Datenbank hier direkt initialisieren, wird ein Fehler gemeldet
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named 'MySQLdb'
Sie Sie müssen die Datei __init__.py des Projekts festlegen
# \PycharmProjects\FristDjango\FristDjango\__init__.py import pymysql pymysql.install_as_MySQLdb()
Führen Sie den Befehl im Terminal und in der MySQL-Datenbank aus. Alle Tabelleninformationen können angezeigt werden
python manage.py makemigrations python manage.py migrate
Es ist besonders umständlich, die Datenbank über Befehle zu bedienen. Wir implementieren den Betrieb der Datenbank über die Hintergrundverwaltungswebseite
Zuerst müssen Sie die Datenbanktabelle in admin.py registrieren Datei
#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)
In den Buchinformationen wird nur der Titel und in den Charakterinformationen nur der Name angezeigt, was der Anzeige nicht förderlich ist
#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)
So fügen Sie Zeichen direkt in der Buchtabelle hinzu, Webseiten-Anzeigeeffekt: Wenn Sie zur Buchdetailseite springen, können Sie Zeichen direkt hinzufügen
Fügen Sie die HeroInline-Klasse hinzu und ändern Sie sie die BookInfoAdmin-Klasse
# book/admin.py class HeroInline(admin.TabularInline): model = HeroInfo extra = 2 #每次增加两个添加人物的表单 class BookInfoAdmin(admin.ModelAdmin): list_display = ['btitle','bpub_time'] inlines = [HeroInline]
Das obige ist der detaillierte Inhalt vonImplementierungsmethode des Django-Buchzeichenanpassungssystems in Python (Backend). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!