0

0

python中Django图书人物适配系统的实现方法(后台)

不言

不言

发布时间:2018-11-15 15:18:21

|

3119人浏览过

|

来源于segmentfault

转载

本篇文章给大家带来的内容是关于python中Django图书人物适配系统的实现方法(后台),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

Django

python下有许多款不同的 web 框架。django是重量级选手中最有代表性的一位。许多成功的网站和app都基于django。
django是一个开放源代码的web应用框架,由python写成。

Django基础

版本:Django 1.10
使用Pycharm创建新项目Django,命名为FirstDjango
有FirstDjango目录,templates目录,manage.py文件
运行manage.py文件类似flask_script命令行

 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/,可以看见It worked页面,但还没有真正的运行APP

52102832-5be952ba7a2c6_articlex.png

修改语言,时区(setting.py)

立即学习Python免费学习笔记(深入)”;

# 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组添加‘Can add group  ’
创建用户normal,隶属add_group组,勾选职员状态(指明用户是否可以登录到这个管理站点)。
使用normal用户登陆后台管理时,将只有增加组的选项。

2616114573-5be9527a8497b_articlex.png

创建自己的应用(app) -- book

terminal输入

python manage.py startapp book

会在当前项目里生成book/目录

创建好自己的应用文件后,首先在项目里注册应用setting.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数据库,可在项目的setting.py文件中查看

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

写好应用book的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. 数据库的查找

sematic
sematic

一个开源的机器学习平台

下载
>>> BookInfo.objects.all()
]>

根据指定信息查找

>>> 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()
, ]>
>>> book1.heroinfo_set.create(hname='小狐狸',hgender=True,hcontent='肉眼看不见事务的本质,只有用心灵才能洞察一切')

查询人物信息有两种方式
1. 根据人物数据库表直接查找

>>> HeroInfo.objects.all()
, ]>

2. 根据与数据对象的关系查找

>>> book1 = BookInfo.objects.get(id=2)
>>> book1.heroinfo_set.all()
, ]>
>>>

使用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

站点对数据库的操作

通过命令对数据库的操作尤不方便,我们通过后台管理的网页来实现对数据库的操作
首先需在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)

2798398140-5bea7ecbd881e_articlex.png

书籍信息只显示标题,和人物信息只显姓名,不利于查看,修改注册的表结构

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

1567868768-5bea7e65b0602_articlex.png

如何在图书表中直接添加人物,网页显示效果:如果跳转到图书详情的页面,可以直接添加人物
添加HeroInline类,修改BookInfoAdmin类

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

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

593531945-5bea7e31b3a18_articlex.png

相关文章

python速学教程(入门到精通)
python速学教程(入门到精通)

python怎么学习?python怎么入门?python在哪学?python怎么学才快?不用担心,这里为大家提供了python速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
python开发工具
python开发工具

php中文网为大家提供各种python开发工具,好的开发工具,可帮助开发者攻克编程学习中的基础障碍,理解每一行源代码在程序执行时在计算机中的过程。php中文网还为大家带来python相关课程以及相关文章等内容,供大家免费下载使用。

715

2023.06.15

python打包成可执行文件
python打包成可执行文件

本专题为大家带来python打包成可执行文件相关的文章,大家可以免费的下载体验。

625

2023.07.20

python能做什么
python能做什么

python能做的有:可用于开发基于控制台的应用程序、多媒体部分开发、用于开发基于Web的应用程序、使用python处理数据、系统编程等等。本专题为大家提供python相关的各种文章、以及下载和课程。

739

2023.07.25

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

617

2023.07.31

python教程
python教程

Python已成为一门网红语言,即使是在非编程开发者当中,也掀起了一股学习的热潮。本专题为大家带来python教程的相关文章,大家可以免费体验学习。

1235

2023.08.03

python环境变量的配置
python环境变量的配置

Python是一种流行的编程语言,被广泛用于软件开发、数据分析和科学计算等领域。在安装Python之后,我们需要配置环境变量,以便在任何位置都能够访问Python的可执行文件。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

547

2023.08.04

python eval
python eval

eval函数是Python中一个非常强大的函数,它可以将字符串作为Python代码进行执行,实现动态编程的效果。然而,由于其潜在的安全风险和性能问题,需要谨慎使用。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

575

2023.08.04

scratch和python区别
scratch和python区别

scratch和python的区别:1、scratch是一种专为初学者设计的图形化编程语言,python是一种文本编程语言;2、scratch使用的是基于积木的编程语法,python采用更加传统的文本编程语法等等。本专题为大家提供scratch和python相关的文章、下载、课程内容,供大家免费下载体验。

698

2023.08.11

vlookup函数使用大全
vlookup函数使用大全

本专题整合了vlookup函数相关 教程,阅读专题下面的文章了解更多详细内容。

28

2025.12.30

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 6.3万人学习

Excel 教程
Excel 教程

共162课时 | 10.1万人学习

PHP基础入门课程
PHP基础入门课程

共33课时 | 1.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号