本文字数: 4k|阅读时长 ≈ 4 分钟
最近接触到《Django by Example》 这本书,看完了后,深深的觉得可以实现Django业余爱好者到Django专业程序员之间的转化。以前看过很多关于Django的资料,累计了不少知识,在看到这本书后,发现自己累计的零碎的知识在这里有系统化的阐述。
这个系列是我为一些以前不太熟练或者不清楚的比较“专业”的知识点做的归纳。
运行django服务器
最简洁的运行方式:
这种方式会在上运行django服务器
指定主机、端口和settings文件的方式:
进阶:wsgi配置
设计blog数据结构
在定义model时,如下两个语句的不同点:
三者初始时都为当前时间
和,的区别在于可修改,而后二者不可修改
为添加时的当前时间,为每次调用方法时都会自动更新
model的
用法:
slug是用于URL中的字符串,仅包含字母,数字,,
参数的意思是当我们用post的日期和slug生成URL时,Django会防止同样的日期生产两条一样的slug
model的属性
当我们从数据库中取出查询结果时,Django会按照字段降序对结果进行排序。
进阶:model fields
Admin
将mode添加到Administration界面
修改应用的admin.py文件,简单的方式为:
通过这种方式添加,Django会自动生成一个界面友好的管理界面,根据field的类型,生成相应的输入框进行增删改查。
自定义models的显示方式
list_display中定义了在管理界面中以列表显示的列,和list_dispplay一样,还有其他属性可以设置:
Working with QuerySet
使用python manage.py shell可以进入有Django运行环境的shell,方便调试
使用python manage.py shell -i ipython可以制定shell为ipython,毕竟ipython比python还是好用多了
QuerySet有create, update, retrieve, filter, exclude, order_by, delete等方法
create object
创建object有两种写法,一种是先保存在内存,然后保存进数据库:
另一种是使用Manager直接保存进数据库:
retrieve object
当用户’yarving’不存在时,报DoesNotExist
当多个用户存在时,报MultipleObjectsReturned
QuerySet被查询后,不会被马上执行,而是在使用的时候才真正去数据库里执行。
model managers
是每个model默认的manager,自定义manager的方法如下:
使用demo:
分页功能
class-based views版本的代码:
template的嵌入
定义了某个页面之后,在另一个页面中嵌入该template的方法:
语句实现的效果为将两个不同的页面的变量赋值。
本文作者: Yarving Liu
本文链接: http://yarving.github.io/2018/12/09/Building-a-Blog-Application/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!
# django
领取专属 10元无门槛券
私享最新 技术干货