이 기사의 내용은 Python에서 Django 책 문자 적응 시스템의 구현 방법(백엔드)에 관한 것입니다. 필요한 친구들이 참고할 수 있기를 바랍니다.
Django
Python에는 다양한 웹 프레임워크가 있습니다. 장고(Django)는 헤비급 선수 중 가장 대표적인 선수이다. 많은 성공적인 웹사이트와 앱이 Django를 기반으로 합니다.
Django는 Python으로 작성된 오픈 소스 웹 애플리케이션 프레임워크입니다.
Django 기본
버전: Django 1.10
Pycharm을 사용하여 FirstDjango라는 새 프로젝트 Django를 만듭니다.
FirstDjango 디렉토리, 템플릿 디렉토리, Manage.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/에 접속해 보면 성공 페이지를 볼 수 있지만 아직 앱이 실제로 실행되지는 않았습니다
언어 및 시간대를 수정하세요(setting.py)
# LANGUAGE_CODE = 'en-us' LANGUAGE_CODE = 'zh-hans' # TIME_ZONE = 'UTC' TIME_ZONE = 'Asia/Shanghai'
Django는 플라스크와 다르기 때문에 매번 수정할 필요가 없습니다. 코드를 수정하는 경우에는 프로그램을 다시 시작하세요.
http://127.0.0.1:7899/admin/, 백그라운드 관리에 액세스할 수 있습니다
여기에서 새 사용자 및 새 그룹을 추가할 수 있습니다. 새 사용자 및 그룹에 권한을 할당할 수 있지만 슈퍼 배포 권한을 실행할 수는 없습니다. users.Function
예: add_group 그룹에 '그룹 추가 가능'을 추가합니다. 일반 사용자를 생성하고 add_group 그룹에 속해 있으며 직원 상태를 확인합니다(사용자가 이 관리 사이트에 로그인할 수 있는지 표시).
일반 사용자로 백엔드 관리에 로그인하면 그룹 추가 옵션만 표시됩니다.
나만의 애플리케이션(앱) 만들기 -- book
터미널 입력python manage.py startapp book
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'book', ]
그런 다음 각 테이블의 구조를 결정합니다. 책의 속성은 ID, 제목, 출판 시간, 초록, 표지입니다. 캐릭터 속성: ID, 이름, 성별, 소개, 도서 소속.
마지막으로 테이블 간의 관계를 결정합니다. 책에 여러 문자가 있고, 문자 데이터베이스 테이블에 외래 키를 씁니다.
# 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)
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), } }
python manage.py makemigrations python manage.py migrate
python manage.py shell #打开类似数据库交互命令的窗口
>>> from book.models import BookInfo,HeroInfo >>> from datetime import date >>> book1 = BookInfo(btitle='小王子',bpub_time=date(1942,5,13)) >>> book1.save()
>>> BookInfo.objects.all() <queryset>]></queryset>
>>> book = BookInfo.objects.get(id=1) >>> book.btitle '小王子'
>>> book1.btitle = '安徒生童话' >>> book1.save() >>> book = BookInfo.objects.get(id=1) >>> book.btitle '安徒生童话'
>>> book = BookInfo.objects.get(id=1) >>> book.delete() (1, {'book.HeroInfo': 0, 'book.BookInfo': 1}) >>> book = BookInfo.objects.all() >>>
먼저 외래 키 없이 데이터베이스 테이블 정보를 생성합니다
>>> 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()
>>> 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. 문자 데이터베이스 테이블을 기반으로 직접 검색
>>> HeroInfo.objects.all() <queryset>, <heroinfo:>]></heroinfo:></queryset>
>>> 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'
# \PycharmProjects\FristDjango\FristDjango\__init__.py import pymysql pymysql.install_as_MySQLdb()
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)
Books 정보에는 제목만 표시되고 캐릭터 정보에는 이름만 표시되며, 등록된 테이블 구조 수정
#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)
북 테이블에 직접 문자 추가하는 방법, 웹 페이지 표시 효과: 도서 상세 페이지로 점프하면 바로 문자 추가 가능
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!