设为首页 收藏本站
查看: 1336|回复: 0

[经验分享] python实例

[复制链接]

尚未签到

发表于 2018-8-4 13:42:33 | 显示全部楼层 |阅读模式
  Django使用mysql操作实战系列之七
  原创 2017年06月27日 16:46:04 标签:django /mysql 721
  1,创建项目test03
  创建项目test03。
django-admin startproject test03  打开test03/settings.py文件,找到DATABASES项,默认使用SQLite3数据库
DSC0000.jpg

  2,mysql数据库创建及配置
  修改为使用MySQL数据库,代码如下:
  将引擎改为mysql,提供连接的主机HOST、端口PORT、数据库名NAME、用户名USER、密码PASSWORD。
DATABASES = {  
    'default': {
  
        'ENGINE': 'django.db.backends.mysql',
  
        'NAME': 'test03', #数据库名字,
  
        'USER': 'root', #数据库登录用户名
  
        'PASSWORD': 'xiaoke', #数据库登录密码,我自己修改了
  
        'HOST': 'localhost', #数据库所在主机(公司中写真实主机地址)
  
        'PORT': '3306', #数据库端口
  
    }
  
}
  注意:数据库test2 Django框架不会自动生成,需要我们自己进入mysql数据库去创建。
  下面是手动创建数据库,打开新终端,在命令行登录mysql,创建数据库test2。
  注意:设置字符集为utf8
create database test2   3,创建booktest应用
  进入test03目录,创建应用booktest
cd test03  
python manage.py startapp booktest
  4,注册booktest应用
  将应用booktest注册到项目中:打开test03/settings.py文件,找到INSTALLED_APPS项,加入如下代码:
DSC0001.jpg

  5,定义模型类
  模型类被定义在“应用/models.py”文件中,此例中为“booktest/models.py”文件。
  模型类必须继承自Model类,位于包django.db.models中。
  对于重要数据使用逻辑删除。
  6,具体模型代码
# 定义图书模型类BookInfo  
class BookInfo(models.Model):
  
    # 图书名称,唯一
  
    btitle = models.CharField(max_length=50, unique=True)
  
    bpub_date = models.DateField()
  
    bread = models.IntegerField(default=0)
  
    bcomment = models.IntegerField(default=0)
  
    # 逻辑删除,默认不删除
  
    idDelete = models.BooleanField(default=False)
  
# 定义英雄模型类HeroInfo
  
class HeroInfo(models.Model):
  
    # 英雄姓名,不唯一,可以有重名的英雄
  
    hname=models.CharField(max_length=50,unique=False)
  
    # 英雄性别,默认False为男性,也可以设为Integer类型,0或者1
  
    hgender=models.BooleanField(default=False)
  
    isDelete=models.BooleanField(default=False)
  
    # 英雄的描述
  
    hcontent=models.CharField(max_length=500)
  
    # 图书与英雄的关系为一对多的关系,所以属性定义在英雄的模型类中
  
    hbook=models.ForeignKey('BookInfo')
  7,迁移
  生成迁移文件。
python manage.py makemigrations  执行迁移。
python manage.py migrate
DSC0002.jpg

  打开数据库的命令行,
DSC0003.jpg

  表booktest_bookinfo结构如:
  默认值并不在数据库层面生效,而是在django创建对象时生效。
DSC0004.jpg

  这里写图片描述
  表booktest_heroinfo结构如下:
  Django框架会根据关系属性生成一个关系字段,并创建外键约束。
DSC0005.jpg

  8,建立测试数据
  在数据库命令行中,复制如下语句执行,向booktest_bookinfo表中插入测试数据:
insert into booktest_bookinfo(btitle,bpub_date,bread,bcomment,isDelete) values  
('射雕英雄传','1980-5-1',12,34,0),
  
('天龙八部','1986-7-24',36,40,0),
  
('笑傲江湖','1995-12-24',20,80,0),
  
('雪山飞狐','1987-11-11',58,24,0);
DSC0006.jpg

  再复制如下语句执行,向booktest_heroinfo表中插入测试数据:
insert into booktest_heroinfo(hname,hgender,hbook_id,hcontent,isDelete) values  
('郭靖',1,1,'降龙十八掌',0),
  
('黄蓉',0,1,'打狗棍法',0),
  
('黄药师',1,1,'弹指神通',0),
  
('欧阳锋',1,1,'蛤蟆功',0),
  
('梅超风',0,1,'九阴白骨爪',0),
  
('乔峰',1,2,'降龙十八掌',0),
  
('段誉',1,2,'六脉神剑',0),
  
('虚竹',1,2,'天山六阳掌',0),
  
('王语嫣',0,2,'神仙姐姐',0),
  
('令狐冲',1,3,'独孤九剑',0),
  
('任盈盈',0,3,'弹琴',0),
  
('岳不群',1,3,'华山剑法',0),
  
('东方不败',0,3,'葵花宝典',0),
  
('胡斐',1,4,'胡家刀法',0),
  
('苗若兰',0,4,'黄衣',0),
  
('程灵素',0,4,'医术',0),
  
('袁紫衣',0,4,'六合拳',0);
DSC0007.jpg

  9,定义视图
  打开booktest/views.py文件,定义视图代码如下:
from datetime import date  
from django.shortcuts import render,redirect
  
from booktest.models import BookInfo
  
# 查询所有图书并显示的视图函数
  
def index(request):
  
    books=BookInfo.objects.all()
  
        heros=HeroInfo.objects.all()
  
        return render(request,'booktest/index.html',{'books':books,'heros':heros})
  
# 新增图书视图视图函数
  
def addBook(request):
  
    book=BookInfo()
  
    book.btitle='晓可自传'
  
    book.bpub_date=date(2017,6,27)
  
    book.save()
  
    # return HttpResponse('ok')
  
    # 重定向跳转到首页
  
    return redirect('/index/')
  
# 根据图书id删除一本书的视图函数
  
def delBook(request,bid):
  
    # 查询出图书
  
    b=BookInfo.objects.get(id=int(bid))
  
    b.delete()
  
    return redirect('/index/')
  10,配置url
打开test03/urls.py文件,配置url如下:  
from django.conf.urls import include, url
  
from django.contrib import admin
  
urlpatterns = [
  
    url(r'^admin/', include(admin.site.urls)),
  
    # 配置成功之后去booktest的urls文件中找对应的视图函数
  
    url(r'^',include('booktest.urls'))
  
]
  
在booktest应用下创建urls.py文件,代码如下:
  
from . import views
  
from django.conf.urls import url
  
urlpatterns=[
  
    url(r'^index/$',views.index),
  
    url(r'^addBook/$',views.addBook),
  
    url(r'^delBook/$',views.delBook)
  
]
  11,创建模板
打开test03/settings.py文件,配置模板查找目录TEMPLATES的DIRS。  
‘DIRS’: [os.path.join(BASE_DIR,’templates’)],
  模板代码如下test03/templates/booktest/index.html:
<html>  
<head>
  
    <title>Python-晓可的图书网站</title>
  
</head>
  
<body>
  
<a href="/addBook/">新增图书</a>
  
<ul>
  
    {%for book in books%}
  
    <li>书名:`book`.`btitle`--<a href="/delBook`book`.`id`/">删除</a></li>
  
    {%endfor%}
  
</ul>
  
<br/>
  
<br/>
  
<h2>所有英雄如下:</h2>
  
<ul>
  
    {% for hero in heros%}
  
    <li>姓名:`hero`.`hname`--大招:{{ hero.hcontent}}</li>
  
    {% endfor %}
  
</ul>
  
</body>
  
</html>
  12,运行
  运行服务器
python manage.py runserver  运行结果如下:
DSC0008.jpg

  查看booktest_bookinfo表信息,可以得知增加和删除图书信息
DSC0009.jpg

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-546535-1-1.html 上篇帖子: python获取linux的系统信息 下篇帖子: python打开大文件整理
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表