Building a Blog Application

本文字数: 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

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181209G0QIPR00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券