龙空技术网

djanog边学边做(9)|用模板展示blog列表(上)

Python量化大时代 166

前言:

目前我们对“模板列表css”大概比较注重,看官们都想要学习一些“模板列表css”的相关资讯。那么小编同时在网上网罗了一些有关“模板列表css””的相关文章,希望兄弟们能喜欢,朋友们一起来学习一下吧!

通过上一节的了解,我们可以通过django的admin界面添加自己的数据了,接下来我们需要把这些数据展示成一个blog的样子。

首先我们在对应的app下,修改urls.py文件。

article/urls.py# 引入pathfrom django.urls import path# 正在部署的应用的名称app_name = 'article'urlpatterns = [    path('test/', views.article_test, name='article_test'),    #新加一行url解析,指定处理函数是 views.article_list    path('article_list/', views.article_list, name='article_list'),]

然后再打开article/views.py,再实现对应的视图函数article_list()

from article.models import ArticlePostdef article_list(request):    articles = ArticlePost.objects.all().order_by('-created')    total_num= len(articles)    # 需要传递给模板(templates)的对象    context = { 'articles': articles ,'num':total_num}    # render函数:载入模板,并返回context对象    return render(request, 'category-list.html', context)

最终利用context把内容都传给模板'category-list.html',模板再负责把内容都渲染出来

我们先看其中比较关键的这一行代码:

articles = ArticlePost.objects.all().order_by('-created')

这句话就是将我们在管理页面中插入的articles数据,从数据库读取出来,并按照创建时间排序。 比较方便的是,不需要写sql语句了,用ORM(Object-Relationl Mapping)操作方法很方便就可以完成了。

这里不妨再深入了解一下,这里返回的articles是一个QuerySet的数据类型,这里不要把他理解为一个从数据库获取到的返回,我认为可以理解成一个sql语句。

因为queryset懒加载 (lazy)的运行模式,也就是说,代码执行到这里,并不会去链接数据库查询,可能只是组装了一个查询语句,当你真的使用这个对象(articles)的时候,才会链接数据库,并且把查询的数据存储到缓存。

比如执行这个句子的时候才是第一次链接数据库

total_num= len(articles)

当运行到下面这一句的时候,也没有去链接数据库,而是使用了缓存。

context = { 'articles': articles ,'num':total_num}

这样的好处是可以避免很多不必要的与数据库的链接,提升查询效率。

另外,QuerySet的数据类型的另一个特性就是支持链式操作。 执行一个对象中的方法后,得到的结果还是这个对象,这样可以接着执行对象上的其他方法。例如:

articles = ArticlePost.objects.all().order_by('-created')articles = articles.fliter(name = "root")

在每一个函数或方法执行结果上可以继续调用同样的方法,因为每一个函数的返回值都是QuerySet。

QuerySet有大量的方法返回的都是QuerySet,支持链式操作,比如all()、fliter()、order_by()等,利用这些操作,你可以轻松组合你需要的查询条件,具体的还是看看官网吧,这里就不赘述了。

QuerySet API

返回新 QuerySet 的方法 filter()exclude()annotate()alias()order_by()reverse()distinct()values()values_list()dates()datetimes()none()all()union()intersection()difference()select_related()prefetch_related()extra()defer()only()using()select_for_update()raw()返回新 QuerySet 的操作符 AND(&OR(|

同时也有一部分是不返回QuerySet,注意分辨使用。

不返回 QuerySet 的方法 get() create() get_or_create() update_or_create() bulk_create() bulk_update() count() in_bulk() iterator() 使用服务器端游标没有服务器端游标 latest() earliest() first() last() aggregate() exists() contains() update() Ordered queryset delete() as_manager()

大家多多尝试一下吧。

标签: #模板列表css