Django开发实战---创建第一个Django应用(二)

   在第一部分我们完成了安装以及简单的创建工程和应用,今天我们继续学习后面的内容。

一、数据库设置

       首先我们打开我们的myfirstsite工程下的setting.py文件。

默认配置使用的是sqlite数据库,如果我们刚接触数据库或者只是对python感兴趣,默认配置是最简单的选择。python自带了sqlite,因此我们不需要额外安装。如果我们需要使用别的数据库例如mysql、oracle、postgresql等我们则需要得先安装好数据库(安装过程这里不赘述,本文使用mysql),然后修改setting.py配置文件

我们将这里的ENGINE(类似java中mysql驱动),NAME(数据库名) 配置项全部改为我需要的mysql配置,另外需要配置数据库用户名和密码,以及host地址端口号

当然还有其他配置项,具体参考https://docs.djangoproject.com/en/2.1/ref/settings/#std:setting-DATABASES

执行

 python manage.py migrate 

执行结束后我们 show tables 发现我们的库里多了好多张表:


什么鬼?怎么这么多表?通过官方文档我了解到其实完全可以不要这些表,其实很简单,只要我们在执行python manage.py migrate 之前将myfirstsite/settings.py 文件中的INSTALLED_APPS配置项把我们不想要的删掉即可。migrate 只会跑我们在INSTALLED_APPS中配置的app。

二、创建模型

我们现在可以定义我们自己的模型了,我们就在我们先前创建的polls应用里定义两个吧,

 Question(问题) 和 Choice(选项),Question 中我们可以顶问题描述和发布日期,而Choice中我们可以定义选项描述和投票记录。每一个Choice与一个Question关联。

我们创建的Question和Choice类均继承models模块的Model类,类中我们定义的属性后续的代码中会使用,而且会被Django当作数据表的列名使用 比如 question_text 或者pub_date ,同时我们通过models模块给这些属性定义了类型,比如question_text = models.CharField(max_length=200) 我们告诉Django question_text 是一个字符串类型并且最大长度是200(后续学习中我们会发现不仅在数据库有用,后面的validation校验也会很方便使用),pub_date=models.DateTimeField 告诉Django ,pub_date 是日期类型。发现,我们还使用了ForeignKey 声明了Choice 和question的关联关系。

    models中有许多属性类是比传参数的比如models.CharField 就必须设置max_length,当然也是可以有一些可选参数的,例如choice_vote = models.IntegerField 我们设置的default值为0.

了解了这些models的属性类,我们准备开始激活我们新加的两个model。激活之前我们必须得安装我们的app,怎么安装来着?对了,在myfirstsite/settings.py 文件中的INSTALLED_APPS配置中添加我们的应用就好了。

    打开polls/app.py文件,我们发现早已经有了一个PollsConfig类,那就简单了:


我们只需要把这个PollsConfig类添加进去就可以了。

配置好了之后我们执行另外一条命令:

python manage.py makemigrations polls

这条命令其实就是告诉Django我们嗯polls的模型发生了改变,我们这里是新建了两个模型。

命令执行成功。同时我们发现polls/migration目录下多了一个0001_initial.py文件

我们准备执行这个文件,创建数据表结构,执行命令:

python mange.py sqlmigrate polls 0001

执行结束后我们发现打印出:

创建表的sql,然而我们发现数据库里并没有实际的创建表,这时候我们可以通过

 python manage.py check 命令去检查 建表语句有没有错误什么的

检查好之后我们准备真正的开始建表了:

python manage.py migrate 

执行OK ,我们发现数据库中多了两张表(polls_quesion和polls_choice):


在我们开发的过程中难免会出现要修改表结构或者新加或者删除我们不想要的表,那么migration对于我们来说非常重要。其实简单总结一下就三步:

     1)修改模型class代码(或新增模型,或删除模型)

     2)执行 python manage.py makgemigration 命令告诉Django 模型发生改变了

     3)执行 python manage.py migration 命令让Django真正的执行我们所做的改变动作

三、调用API

执行

python manage.py shell

进入命令行

开始编写代码

先导入我们建好的model代码,

查询数据库中的数据结果为空,new一个Question对象并保存:

发现我们的polls_question表中有了一条记录:


修改q对象的question_text的值 并保存,然后我们再new 一个Question对象保存:

从图中我们看到 第二次更改question_text 后再保存的时候 我们的库中的值做了update操作

new出来的第二个对象插入是新插入表中了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,185评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,652评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,524评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,339评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,387评论 6 391
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,287评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,130评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,985评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,420评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,617评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,779评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,477评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,088评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,716评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,857评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,876评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,700评论 2 354

推荐阅读更多精彩内容