Django入门与实践 17-26章总结

Django入门与实践-第17章:保护视图
Django 有一个内置的视图装饰器 来避免它被未登陆的用户访问:
如今若是用户没有登陆,将被重定向到登陆页面:
如今尝试登陆,登陆成功后,应用程序会跳转到原来所在的位置。



Django入门与实践-第18章:访问已登陆用户
如今我么能够改进 new_topic 视图,将发布主题的用户设置当前登陆的用户,取代以前直接从数据库查询出来的第一个用户,
以前这份代码是临时的,由于那时候尚未方法去获取登陆用户,可是如今能够了:
有两个关键字参数,pk用于惟一标识版块(Board),topic_pk用于惟一标识该回复来自哪一个主题。



Django入门与实践-第19章:主题回复
值得注意的是:在视图函数replay_topic中,咱们使用 topic_pk ,由于咱们引用的是函数的关键字参数,
而在new_topic视图中,咱们使用的是 topic.pk ,由于 topic 是一个对象(Topic模型的实例对象),
 .pk 是这个实例对象的一个属性,这两种细微的差异,其实区别很大,别搞混了。



Django入门与实践-第20章:QuerySets(查询结果集)
如今咱们花点时间来探索关于模型的 API。首先,咱们来改进主题:
有3个任务:
    显示每一个板块的总主题数
    显示每一个板块的总回复数
    显示每一个板块的最后发布者和日期
在实现这些功能前,咱们先使用Python终端
由于咱们要在Python终端尝试,因此,把全部的 models 定义一个__str__ 方法是个好主意
在 Post 模型中,使用了 Truncator 工具类,这是将一个将字符串截取为任意长度字符的简便方法(这?咱们使用30个字符)
双下划线的 topic__board 用于经过模型关系来定位,在内部,
Django 在Board-Topic-Post之间构建了桥梁,构建SQL查询来获取属于指定版块下面的帖子回复。
最后一个任务是标识版块下?的最后?条回复



Django入门与实践-第21章:迁移
迁移(Migration)是Django作Web开发的基本组成部分,它使得咱们在演进应用的models时,它能使得models文件与数据库保持同步。
当咱们第一次运行命令 python manage.py migrate 的时候,Django 会抓取全部迁移文件而后?成数据库 schema。
当Django应用了迁移以后,有一个特殊的表叫作django_migrations,在这个表中,Django注册了全部已经的迁移记录。
咱们添加了一个 PositiveIntegerField ,由于这个字段将要存储的是页面的浏览量,不多是一个负数
在这节课中,咱们在留言板的基础功能上取得了一些进步,还剩下一些东西等待去实现,
好比:编辑帖子、个人帐户(更改我的信息)等等。以后咱们将提供markdown语法和列表的分页功能。



Django入门与实践-第22章:基于类的视图
欢迎来到系列教程的第六部分!在这篇教程中,咱们将详细探讨基于类的视图(简称CBV)。
咱们也将重构一些现有的视图,以便利用内置的基于类的通用视图(Generic Class-Based Views)。
这篇教程咱们还将讨论许多其余主题,例如如何使用分页,如何使用markdown以及如何添加简单的编辑器。
咱们还将探索一个名为 Humanize的内置软件包,用于对数据进行“人为操做”。
到头来,全部的Django视图其实都是函数。即使是CBV。在类的底层,它完成了全部的功能并最终返回一个视图函数。
在咱们继续教程以前,让咱们清楚这三个术语的含义:
    基于函数的视图(FBV)
    基于类的视图(CBV)
    基于类的通用视图(GCBV)
FBV是Django视图中最简单的表示:它就是一个接收 HttpRequest 对象并返回一个 HttpResponse 的函数。
CBV是每一个Django视图都被定义为一个扩展 django.views.generic.view抽象类后的 Python 类。
GCBV是能够解决一些具体问题的内置的CBV集合,好比列表视图,建立,更新和删除视图等。
基于类的视图 (CBV)
CBV是View类的集成类。这里的主要区别在于请求是以HTTP方法命名的类用法内处理的,例如GET ,POST ,PUT ,HEAD 等。
因此,在这里,咱们不须要作一个条件来判断请求是一个 POST 仍是它是一个 GET 。
代码会直接跳转到正确的方法中。在 View 类中内部处理了这个逻辑。
总之,关于CBV的好处是咱们能够在类里面添加更多的方法,也许能够这样作:
基于类的经过视图(GCBV)
接下来关于GCBV。这是一个不一样的状况。正如我前面提到的,GCBV是内置CBV的常见用例。
它们的实现每每会大量使用多重继承(混合继承)和其余面向对象的策略。
列表视图
咱们如今能够利用 CBV 的功能来重构一些现有的视图。以主页为例,咱们就先从数据库中抓取全部的 boards 并将其罗列在HTML中:



Django入门与实践-第23章:分页实现
咱们能够很是容易地使用 CBV 来实现分页功能。但首先我想手工分页,这样就更有助于咱们理解背后的机制,这样它就不那么神秘了。
实际上对 boards 列表视图分页并无意义,由于咱们不指望有不少boards。但无疑对于主题列表和帖子列表来讲是须要一些分页的。
FBV 分页
这里是咱们如何使用 FBV 来实现分页:
GCBV 分页
下面,相同的实现,但此次使用ListView。
可复用的分页模板
就像咱们在 form.html 中封装模板时作的同样,咱们也能够为分页的HTML代码来建立相似的东西。
咱们来对主题帖子页面进行分页,进而找到一种复用分页组件的方法。
如今,咱们从topics.html模板中获取分页部分的html代码片,
并在templates/includes 文件夹下面建立一个名为 pagination.html 的新文件,和 forms.html 同级目录:



Django入门与实践-第24章:个人帐户视图
好的,那么,这部分将是咱们最后的一个视图。以后,咱们将专心来改进现有功能。



Django入门与实践-第25章:Markdown 支持
让咱们在文本区域添加 Markdown 支持来改善用户体验。你会看到要实现这个功能很是简单。
首先,咱们安装一个名为 Python-Markdown 的库:
pip install markdown
默认状况下,这个插件会将它找到的第一个文本区域转换为 markdown 编辑器。因此这点代码应该就足够了:



Django入门与实践-第26章:个性化工具
我以为只添加内置的个性化(humanize)包就会很不错。它包含一组为数据添加“个性化(human touch)”的工具集。
例如,咱们可使用它来更天然地显示日期和时间字段。咱们能够简单地显示:“2分钟前”,而不是显示整个日期。
咱们所要作的就是在模板中加载 {%load humanize%} 这个模板标签,而后在模板中使用过滤器: {{ topic.last_updated|naturaltime }}
相关文章
相关标签/搜索