Heim  >  Artikel  >  Backend-Entwicklung  >  Implementierungsmethode des Django-Buchzeichenanpassungssystems in Python (Backend)

Implementierungsmethode des Django-Buchzeichenanpassungssystems in Python (Backend)

不言
不言nach vorne
2018-11-15 15:18:212881Durchsuche

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

Implementierungsmethode des Django-Buchzeichenanpassungssystems in Python (Backend)

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.

Implementierungsmethode des Django-Buchzeichenanpassungssystems in Python (Backend)

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)

SQLite3-Dateityp-Datenbank verwenden

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

Der Betrieb der Site der Datenbank

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)

Implementierungsmethode des Django-Buchzeichenanpassungssystems in Python (Backend)

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)

Implementierungsmethode des Django-Buchzeichenanpassungssystems in Python (Backend)

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]

Implementierungsmethode des Django-Buchzeichenanpassungssystems in Python (Backend)

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen