[django]models中各种Field
django.db.models是django中很重要的一层,处理着数据和对象的交换!在我看来,如果有SQL基础,学习这就很容易,因为基本上models就是将sql不同类型封装成了不同的类。
django入门后都知道models中有很多Field,其中很多Field为我们提供了便捷的功能,但是对于其中的各类Field掌握还不是很全,比如当时写博客问文章的Slug使用的是CharField后来还是小邪兽提醒我使用SlugField。今天通读了所有的Field就此也整理下
AutoField
其实质是一个InterField,随着记录的增长自动增加,但是这个Field不需要我们太留心,因为如果你的models中没有primary key的时候就会自动添加一个AutoField
BigIntegerField/SmallIntegerField
整型。。根据文档描述,BigIntegerField能表示-9223372036854775808到 9223372036854775807的数。
BooleanField / NullBooleanField
布尔型,表示true or false 如果你希望他能够空,那么你需要用NullBooleanField
CharField
字符串,没有什么好说的,比较常用,但是有一个必须赋值的参数max_length表示最大长度
CommaSeparatedIntegerField
逗号分开的整形?实质是CharField,不是很理解
DateField/DateTimeField/TimeField
日期和时间,类似python标准库中的datetime.date,其中有两个可选参数需要注意,auto_now保存时自动使用当前时间,一般作为最后修改时间,auto_now_add新建对象时自动使用当前时间,一般作为创建时间!
DecimalField
小数?英语不行,表示没看懂。
EmailField
Email,本质应该是CharField加个验证Email的正则
FileField / FilePathField
文件和文件路径,这块比较复杂,改天单独研究
FloatField
浮点数,这个一般会和DecimalField混淆,但是本质是不同的一个使用python的float类型,一个使用的是Decimal
ImageField
一个特殊的FileField,拥有两个额外的属性height_field,width_field
IPAddressField
ip地址,这个真是比较特殊,以后省去自己判断,其中注意protocol默认是both也就是都接受,也可以单独设成’IPv4’或者’IPv6’表示只接受IPV4或者IPV6
PositiveIntegerField/PositiveSmallIntegerField
非负整型
SlugField
这个我特别喜欢,用来表示缩略表示内容,一般用来生成URL
TextField
我个人认为这个和CharField类似,不同的仅仅是在form中这个需要TextArea,CharField仅仅需要TextInput
URLField
URL,一般存储URL是django1.5中新加入的
pre的那点事
想搞web什么都要学习,正在一点点修复博客的细节,今天就为一个小细节纠结了半天。
博客的代码高亮显示在pre标签中,这个是pygments自动生成的,也应该是个基本的标准吧。但是使用多了发现个问题,pre标签无法显示长度超过div标签长度的代码,虽然代码超过那个长度很少,而且规范的代码风格也不会允许你超过那个长度,但是少数语言种类,html,javascript多少都会很长的,考虑到这些我也开始尝试美化这个细节
思路一,换行
这个思路就是让pre到长度不够的时候自动换行,这样后面遮住的代码就可以完整的显示出来了,网上找了相关的资料,主要的方法就是修改css,下面整理了一个比较全面的css方案:
1 | pre { |
实测这个方案在chrome,firefox,ie8下是有效的,多余的我就不知道了!但是出来的结果让我不是很满意,首先,我的代码块没有设计行号,这个是为了美观,简洁,后面我们不打算加,那么换行后没有行号作为一个参考,就会显示的很乱,好吧,我放弃了!
方案二,滚动条
换行不行就试试能不能在长度不够的时候自动添加滚动条,我觉得这个应该是个不错的解决方案,由于自己css记得不多,就只能找了,得到下面的方案
1 | pre { |
比较通俗不解释了,不过我有点疑问,为什么默认不设置overflow: auto呢,不过好歹问题解决了
最后的效果可以参考这篇文章
Django中添加manage.py自定义命令
最近一直忙着寻找实习,也没什么时间来学习新的知识,越找啊越觉得自己懂得东西少。现在安顿下来,也要静下心来学习了!
manage.py是django的管理文件,简单的来说也可以理解为一个总控制台,我们日常操作django都可以通过他,比如我们需要启动调试服务器,我们会用到这样的命令:
python2 manage.py runserver
runserver就是其中一个管理命令,那么我们现在来尝试下自己添加管理命令。有人可能会这样认为管理嘛干嘛一定要在这里添加命令,自己写个脚本不就可以了,我是这样理解的,每个app都有自己的功能,如果需要一些自定义的功能的时候这样分类方便,将命令写入app也有助于以后app的重构。
再来个通俗点的,规范总是有价值的,不知道为什么那么遵守就是!开个玩笑!
我们先创建一个以命令名称为文件名的py文件,例如mycommand.py写入类似下面的代码:
1 | from django.core.management.base import BaseCommand |
简单的来说就是继承BaseCommand来实现我们需要的功能,这里args指的是参数,但是并不影响你的输入,仅作为帮助提示,help顾名思义帮助文档,类似__doc__主要显示这条命令的功能,当然这两个参数可以不写的,主要就是其中的handle函数,这个函数完成这条命令的主体功能!
完成这些后将这个文件放入你的app的management/commands目录下目录结构应该是这样的
1 | ├── __init__.py |
这样django就会自动识别这些命令了,记得要启用你的app哦。这个时候我们运行
python2 manage.py
你应该可以看到他提示你的命令了
[myapp]
mycommand
现在我们看看提示
1 | $ python2 manage.py help mycommand |
然后运行试试
1 | $ python2 manage.py mycommand |
一个简单的例子就这样完成了,再使用时,好好考虑那些功能需要做成manage.py的命令,比如我准备写个简单的命令,将博客文章导出成markdown文件,做个备份
4-20 整理简历的一点感想
前几天,为了找实习,整理了一份简历,用来应付各种实习生应聘,当然我也忘不了python-cn邮件列表,抱着试一试的想法,我也主动发帖求份实习的工作,今天回头看一看好多人回复(我记得以前gmail会有提示的,怪了),根据大家的回复也说说自己的感想!
简历应该扬长避短,正如其中有人说到的,四级分数不是那么高的话也就没有必要写出来,大家不会关心你的分数,如果分数足够亮可以拿出来,我嘛,还差很远。
语言应该合理,语气应该适中,从头看到尾我的简历里的确有很多东西,有些偏激,这些地方一方面是为了体现我的一些想法,另一方面也是体现我的自信,但是语气的确有些过了,写简历也是个经验活啊!
还缺乏亮点,尽管列表里有些人对我表示认可的态度,我觉得我的这第一份简历里面尚缺乏让人眼前一亮的点,对于我这样一个平凡的不能再平凡的人来说,还要完善,我是一个自由的人,我觉得不光要让人了解我的技术,还要让人了解我的个性,以及我对待事物的态度!
另外有人说照片太。。。那是我身份证上的,改天一定要照张。。。。
吐槽下,要是5月木有找到实习就要参加学校的坑爹实习了,表示压力山大啊!我去!
4-12 再会深度
deepin从我了解那天开始就是我一直想去的公司,撇开那些关于xp的好与不好,deepin的linux做的真的很用心,今天再一次有机会参观deepin,借着下载iso的时间聊聊今天的一些感想!
所见
由于显卡驱动的问题,deepin的新版de我没有机会尝试,今天去看了看,作为一个桌面环境来说,dde已经比较完善,launcher,dock,通知,电源,网络,挂载。。这些都实现了,我也刻意关注了下资源占用,基本上属于xfce级别,这点我很惊讶,compiz的特效配上新版de真的是比较炫,使用了半天电脑温度还好,经不住诱惑的我,想安装试试了。
说来一定要试试的就是deepin-emacs了,虽然我在arch上打包用过,但是相信配合deepin会使用的更好,emacs还是那么强大,败给他的仅仅是自己的耐心,听歌,文档,todo,终端,irc,email,翻译。。这些都是实用功能,自己配置起这样的emacs要花的时间可以想象
所闻
听侯哥说deepin有着庞大的野心,不仅要在桌面环境上下功夫,在网站及协作平台上来下功夫,要利用django来重写deepin整站,这点我很感兴趣,自从写这个博客体会到django的强大和便捷后,对这个陌生的领域特别的感兴趣。
所感
从deepin离开,侯哥送我出来聊了一下,表达了我对deepin这个自由的公司的向往,在车上我也有想,自己在所从事的领域,真的不够精,很多方面都是了解,但是不精通,导致自己在选择的时候,选项很多,但是底气确不够,我喜欢前沿技术但是我觉得要把每个计数都融会贯通,结合自己已经很熟悉的技术再来尝试新的技术,就像今天看的的利用python调用js渲染页面实现的一个简单的weibo的例子。
自己的大学已经不多了,真正自己能拿得出手的东西也不是很多,想指望这些一下能找个好的工作真的不容易,
我要加紧把握自己的时间,已经玩掉很多时间了,多练练手,不管最后有没有机会进入deepin,我相信这段经历都是美好的!
4-12
今天好热!
django-south使用,维护利器
django网站数据库方便基本上都是自动维护的,但是如果要修改数据库就会比较麻烦,查了下相关的文档,django通过syncdb无法实现对models的增加。因为可能会造成意外的错误,所以推介手动修改数据库。但是比如我这个blog的维护,加入新功能难免会修改数据库,这里介绍个便捷的方法使用django-south
大家可以上他们官网来获取包的最新版本,也可以通过pip安装
下面简单讲下这个包的使用
在INSTALL_APP中添加south,通过syncdb将south同步进数据库
执行下列这个句,在你的app目录下创建migrations目录以及第一次迁移需要的0001_initial.py文件
python2 manage.py convert_to_south youappnam
如果models改变就执行
python2 manage.py schemamigration youappname –auto
最后执行同步数据库(如果出现表已存在的错误,后面加 –fake)
migrate manage.py youappnam
新系统的第一篇文章
忙活了几天,在@小邪兽_deepin 的帮助下 完善了许多博客的系统,基本所有wordpress的样式都移植过来了,侧边栏的功能也越来越完善,添加了标签云,分类,这些当初设计的时候都没有想过的。
现在的jovesky才真正像一个博客了,各方面功能也都比较完善了,但是系统整体代码不够严谨,很多漏洞还没发现,不过相信我会一直慢慢完善的,直到发布1.0版,哈,意淫下!
在这里不得不佩服django的强大,在排除前段和后台网页设计的压力后。这样一个博客写出来还是很轻松的,其中很多函数都帮住完成了常用的功能。
这几天不知道为什么,特别的有激情,哈,又找回了刚上大学那会的感觉,键盘手感都感觉好了许多。看来我就是这个命。
最后谢谢
:::python
hello world
豆瓣线上笔试有感
到了大三 我也开始急着自己的实习了,喜欢python喜欢linux,总希望能找到相关的实习,但事实就是自己能力还不够哦。加上自己的项目经验不够多,感觉自己的简历都比别人薄一下。也许这也是很多大学生共同的烦恼。
最近正好收到豆瓣HR发来的邮件 约好时间参加线上笔试,说起豆瓣,我对他真是很有好感,一方面是因为他是国内成功运用python的网站之一,那些说python无法处理海量数据的只好闭嘴了,另一方面特别的喜欢豆瓣电台,基本上这两年听歌都用的她,说起他推介的歌还是不错的,偶尔可以发现一些不错的歌。
说到正题,拿到题目,AB卷,每个分别有两道算法题,一道操作题,我倒是很不理解,为什么还有操作题,发邮件也不好展示啊,上面还写着现场开发题,可能我没理解他的意思吧,这些不重要。简单谈谈题目。一道找零钱体,看似不难,但是我用以前的动态规划解答发现他给的币种太多了,递归严重超时了,于是gg思密达!一道加解密题借助着手边的电脑勉强做出来,一个数据库设计题,在我看来,我回答的简直是小学生水平,哈,然后是一个扑克判定输赢的题,看了题怎么看都是赌神里面玩的梭哈规则都一样,但是没什么思路加上时间木有了,表示木有做了!
怎么说了,第一次笔试,虽然是这种不正式的线上笔试,还能偷点懒,但是真的觉得很紧张,很多算法以前知道也突然想不起来,面对社会又是怎么的精彩或者惊彩。
不管怎么说这是一个好的开始,我要努力啊!
最近学习进度太慢了。
木有写文章,都是些牢骚!
新年新气象
说来,自己最近几个月真是懒了很多,看看可怜的小站就知道,很久没有文章更新,但是总的来说2012末日已经安全过去了,我还活着,这点不应该庆幸吗,呵呵
来年来,自己要学的东西真的很多,以前从没想过自己会去学习c#,但现在因为一个项目的需求也开始了解了,其实变成语言真的不分好坏,只有是否合适自己用。
大三马上就要完了,马上就要实习了,说实话压力很大,我总觉得自己知道的太少了,事实上也是这样的,要加油,少玩一点了。
如果哪个公司有合适的实习机会提供的话,可以联系我,非常感谢。