ホームページ  >  記事  >  バックエンド開発  >  PythonでのDjango書籍文字適応システムの実装方法(バックエンド)

PythonでのDjango書籍文字適応システムの実装方法(バックエンド)

不言
不言転載
2018-11-15 15:18:212892ブラウズ

この記事の内容は、Django ブックの文字適応システムの Python での実装方法 (バックエンド) に関するもので、一定の参考価値がありますので、困っている友人は参考にしていただければ幸いです。

Django

Python にはさまざまな Web フレームワークが存在します。ジャンゴはヘビー級選手の代表選手です。成功している Web サイトやアプリの多くは Django に基づいています。
Django は、Python で書かれたオープンソースの Web アプリケーション フレームワークです。

Django の基本

バージョン: Django 1.10
Pycharm を使用して、FirstDjango という名前の新しいプロジェクト Django を作成します
FirstDjango ディレクトリ、テンプレート ディレクトリ、管理ファイルがあります.py ファイル
flask_script コマンド ラインと同様に manage.py ファイルを実行します

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

http://127.0.0.1:7899/ にアクセスすると、「動作しました」ページが表示されますが、APP は動作していません実際にはまだ実行されていません

PythonでのDjango書籍文字適応システムの実装方法(バックエンド)

言語、タイムゾーンを変更する (setting.py)

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

# TIME_ZONE = 'UTC'
TIME_ZONE = 'Asia/Shanghai'

Django は再起動する必要がないという点で flask とは異なりますコードを変更するたびにプログラムが変更されます。

http://127.0.0.1:7899/admin/、バックグラウンド管理にアクセスできます
ここで、新しいユーザーと新しいグループを追加できます。新しいユーザーとグループに権限を割り当てることはできますが、権限を割り当てることはできません。スーパーユーザーの配布許可機能を実行
例: add_groupグループに「グループ追加可能」を追加
通常のユーザーを作成し、add_groupグループに所属させ、従業員のステータスを確認します(ユーザーがこのグループにログインできるかどうかを示します)管理サイト)。
通常のユーザーとしてバックグラウンド管理にログインする場合、グループを追加するオプションのみが表示されます。

PythonでのDjango書籍文字適応システムの実装方法(バックエンド)

独自のアプリケーション (アプリ) を作成する -- 本

ターミナル入力

python manage.py startapp book

は、現在のプロジェクトにブック/ディレクトリを生成します

独自のアプリケーション ファイルを作成したら、まずアプリケーションの settings.py をプロジェクトに登録します

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'book',
]

データベース構造 (model.py) の記述を開始します

まず、データベース テーブルが何であるかを決定します:書籍、キャラクター。
次に、各テーブルの構造を決定します。本の属性は、ID、タイトル、発行時刻、要約、表紙です。キャラクター属性: ID、名前、性別、紹介文、本。
最後にテーブル間の関係を決定します。ブックには複数の文字が存在します。文字データベース テーブルに外部キーを書き込みます。

Django フレームワーク構造では、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)

sqlite3 ファイル タイプ データベースを使用します

Django はデフォルトで sqlit3 データベースを使用します。これはプロジェクトの settings.py ファイルで確認できます

DATABASES = {
    'default': {
         'ENGINE': 'django.db.backends.sqlite3',
         'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
     }
}

models.py ファイルを作成した後アプリケーションブックでは、データベースの作成を開始します

python manage.py makemigrations   
python manage.py migrate

sqlite3 データベーステーブルの入力方法

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

1. データベースへのデータの追加

>>> from book.models import BookInfo,HeroInfo
>>> from datetime import date
>>> book1 = BookInfo(btitle='小王子',bpub_time=date(1942,5,13))
>>> book1.save()

2. 検索データベース
#

>>> BookInfo.objects.all()
<queryset>]></queryset>
指定した情報を元に検索

#

>>> book = BookInfo.objects.get(id=1)
>>> book.btitle
'小王子'
##3. データベースデータの変更##
>>> book1.btitle = '安徒生童话'
>>> book1.save()
>>> book = BookInfo.objects.get(id=1)
>>> book.btitle
'安徒生童话'
##4. データベースデータの削除


>>> book = BookInfo.objects.get(id=1)
>>> book.delete()
(1, {'book.HeroInfo': 0, 'book.BookInfo': 1})
>>> book = BookInfo.objects.all()
>>>
5. データベーステーブル間の関連付け

まず、外部キーなしでデータベーステーブル情報を作成します

>>> book1 = BookInfo(btitle='小王子',bpub_time=date(1942,5,13))
>>> book2 = BookInfo(btitle='睡美人',bpub_time=date(1952,6,29))
>>> book1.save()
>>> book2.save()
次に、外部キー付きデータベーステーブル情報を作成します

1. に従って文字を直接作成しますデータテーブル構造

>>> hero1 = HeroInfo(hname='小王子',hgender=True,hcontent='小王子没有被成人那骗人的世界所征服',hbook=book1)
>>> hero1 = HeroInfo(hname='玫瑰花',hgender=False,hcontent='玫瑰花的虚荣心伤害了小王子对她的感情',hbook=book1)
>>> hero1.save()
>>> hero2.save()
2. 既知の書籍に対応する文字情報に基づいて文字を追加します


>>> book1 = BookInfo.objects.get(id=2)
>>> book1.heroinfo_set.all()
<queryset>, <heroinfo:>]>
>>> book1.heroinfo_set.create(hname='小狐狸',hgender=True,hcontent='肉眼看不见事务的本质,只有用心灵才能洞察一切')
<heroinfo:></heroinfo:></heroinfo:></queryset>
文字情報を問い合わせるには 2 つの方法があります

1. に従って直接検索します。文字データベーステーブルへ
#

>>> HeroInfo.objects.all()
<queryset>, <heroinfo:>]></heroinfo:></queryset>
2. データオブジェクトとの関係に基づいて検索

#

>>> book1 = BookInfo.objects.get(id=2)
>>> book1.heroinfo_set.all()
<queryset>, <heroinfo:>]>
>>></heroinfo:></queryset>

mysql ファイルタイプのデータベースを使用


# #setting.py ファイルのデータベース構成を変更します

# 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'
__init__.py ファイルを設定する必要がありますプロジェクトの

# \PycharmProjects\FristDjango\FristDjango\__init__.py
import pymysql
pymysql.install_as_MySQLdb()

ターミナル上でmysqlデータベース内のコマンドを実行すると、すべてのテーブル情報が表示されます
#

 python manage.py makemigrations  
 python manage.py migrate
サイトによるデータベースの操作


コマンドでデータベースを操作するのは特に不便なので、バックグラウンド管理Webページからデータベースの操作を実装します

まず、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)

##書籍情報はタイトルのみ、文字情報は名前のみで見にくいです 登録したテーブル構造を変更してください

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

#書籍テーブルに文字を直接追加する方法、Web ページの表示効果:書籍の詳細ページにジャンプすると、文字を直接追加できますPythonでのDjango書籍文字適応システムの実装方法(バックエンド)HeroInline クラスを追加し、BookInfoAdmin クラスを変更します

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

class BookInfoAdmin(admin.ModelAdmin):
    list_display = ['btitle','bpub_time']
    inlines = [HeroInline]

PythonでのDjango書籍文字適応システムの実装方法(バックエンド)

以上がPythonでのDjango書籍文字適応システムの実装方法(バックエンド)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。