通常情况下在Views.py中直接写一个视图函数就可以了,由于每次点出详情时都会经视图函数处理,

所以可以在此视图函数中对浏览次数进行“+1” 操作。

对应的url:url(r'^(?P<pk>[0-9]+)/$', views.get_detail, name='detail'),

def get_detail(request, pk=''):
# 根据文章的id 对每一次点击累加
context = Text.objects.get(id=pk)
browses = context.browse
browses += 1
context.browse = browses
context.save()
return render(request, 'news/detail.html',{'context':context})

但这次跟着Django 官方文档走的,用的:generic.DetailView子类:

然后知道它有这些方法:

1.dispatch()
2.http_method_not_allowed()
3.get_template_names()
4.get_slug_field()

5.get_queryset()
6.get_object()
7.get_context_object_name()
8.get_context_data()
9.get()
10.render_to_response()

英语不好,看了好一会也没发现怎么像上面的get_detail函数那样获取对应“id”的对象

最后试了下get,写了下面这个:

对应的url:url(r'^(?P<pk>[0-9]+)/$', views.DetailView.as_view(), name='detail'),

class DetailView(generic.DetailView):
model = Text
template_name = 'news/detail.html'
context_object_name = 'blog' def get_queryset(self): return Text.objects.filter(pub_date__lte=timezone.now()) def get(self, request, *args, **kwargs):
# 根据文章的id 对每一次点击累加
blog = Text.objects.get(id=kwargs['pk'])
browses = blog.browse
browses += 1
blog.browse = browses
blog.save()
return render(request, 'news/detail.html', {'blog': blog})

事实上关键就在得到具体的对象,所以这个地方需要"id",所以需要得到从url中捕获的“pk”,

但是这个值在**kwargs中,可以通过kwargs['pk']得到它。

Django 浏览页面点击计数(通用视图)的更多相关文章

  1. Django 1.6 基于类的通用视图

    Django 1.6 基于类的通用视图 最初 django 的视图都是用函数实现的,后来开发出一些通用视图函数,以取代某些常见的重复性代码.通用视图就像是一些封装好的处理器,使用它们的时候只须要给出特 ...

  2. Django:之Sitemap站点地图、通用视图和上下文渲染器

    Django中自带了sitemap框架,用来生成xml文件 Django sitemap演示: sitemap很重要,可以用来通知搜索引擎页面的地址,页面的重要性,帮助站点得到比较好的收录. 开启si ...

  3. Django初级手册4-表单与通用视图

    表单的编写 1. detail.html模版的编写 <h1>{{ poll.question }}</h1> {% if error_message %}<p>&l ...

  4. Django——django1.6 基于类的通用视图

    最初 django 的视图都是用函数实现的,后来开发出一些通用视图函数,以取代某些常见的重复性代码.通用视图就像是一些封装好的处理器,使用它们的时候只须要给出特定的参数集即可,不必关心具体的实现.各种 ...

  5. 6:django 通用视图

    上一节我们介绍了django视图函数里面几个常用的函数,这节我们来看一下django为我们提供的一些通用视图吧 在最后面有我自己的示例代码,html部分太多了就不贴了 “简单”视图函数 正如名字所言, ...

  6. django系列8:优化vote页面,使用通用视图降低代码冗余

    修改detail.html,将它变为一个可用的投票页面 <h1>{{ question.question_text }}</h1> {% if error_message %} ...

  7. 5 第一个Django第4部分(表单和通用视图)

    上一节完成了视图编写,这一节为应用添加投票功能,也就是表单提交. 5.1编写一个简单的表单 5.2使用通用视图 5.3改良视图 5.1编写一个简单的表单 在网页设计中添加Form元素 polls/te ...

  8. Django 1.10中文文档-第一个应用Part4-表单和通用视图

    本教程接Part3开始.继续网页投票应用程序,并将重点介绍简单的表单处理和精简代码. 一个简单表单 更新一下在上一个教程中编写的投票详细页面的模板polls/detail.html,让它包含一个HTM ...

  9. django通用视图之TemplateView和ListView简单介绍

    django支持类视图,与此同时django为我们提供了许多非常好用的通用视图供我们使用,这其中TemplateView.ListView和DetailView是我们经常使用到的,这里就对Templa ...

随机推荐

  1. STM3210x建工程库函数版本

    1.首先下载一个固件库,我下载的是stm32f10x_stdperiph_lib 3.5V版的 2.新建一个文件夹,可命名为"STM32建工程库函数版本" 3.在"STM ...

  2. 新建STM32工程

    1) 2)保存 3)选择公司和芯片的型号,STM32F103C8T6,64kB Flash, 20kB SRAM. 4)手动添加启动代码 5)新建如下文件夹 6)回到工程,选中target,右键Add ...

  3. Dos学习笔记(1)dir命令

    这个命令是最常用的命令,就像linux的ls一样,同样他也有很多很多optionnal field供我们选择, 看了半天,觉得自己离盲打肯定还是有很大的差距的,现在只是想体验一下dos,或者说感受下这 ...

  4. php 函数strpos()

    strpos() 函数查找字符串在另一字符串中第一次出现的位置. strpos(string,find,start) 返回  从string中的start位置开始找find第一次出现的位置 注意: s ...

  5. 多模块打包后,扫描不到@controller和@service,实现 ADD DIRECTORY ENTRIES

    多模块打包后,扫描不到@controller和@service等Bean. 原因:打包时没有生成目录信息 解决办法: 1.在eclipse或者myeclipse 打包时 勾选 ADD DIRECTOR ...

  6. [NOIP2015] 斗地主(搜索)

    题目描述 牛牛最近迷上了一种叫斗地主的扑克游戏.斗地主是一种使用黑桃.红心.梅花.方片的A到K加上大小王的共54张牌来进行的扑克牌游戏.在斗地主中,牌的大小关系根据牌的数码表示如下:3<4< ...

  7. 高级Linux SA需要会做的事情

    高级Linux SA需要会做的事情:linux---------系统安装(光盘或自动化安装)linux---------系统常用工具安装(sudo,ntp,yum,rsync,lrzsz syssta ...

  8. ALV 顶栏的按钮设定

    *&---------------------------------------------------------------------* *& Report ZHJ_TEST0 ...

  9. c# List去重

    1 list如果数据是值类型,比如list<int> 这种,添加linq之后就可以使用list = list.Distinct().ToList(); 2 如果是数据是引用类型,比如中间是 ...

  10. gRaphael——JavaScript 矢量图表库:两行代码实现精美图表

    gRaphael 是一个致力于帮助开发人员在网页中绘制各种精美图表的 Javascript 库,基于强大的 Raphael 矢量图形库.你只需要编写几行简单的代码就能创建出精美的条形图.饼图.点图和曲 ...