この記事の内容は、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 は動作していません実際にはまだ実行されていません
言語、タイムゾーンを変更する (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 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)
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>
# #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ページからデータベースの操作を実装します
#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 ページの表示効果:書籍の詳細ページにジャンプすると、文字を直接追加できます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書籍文字適応システムの実装方法(バックエンド)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。