通常情况下在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. 2.4G无线射频通信模块nRF24L01+开发笔记(基于MSP430RF6989与STM32f0308)(1.(2)有错误,详见更正)

    根据网上的nRF24L01+例程和TI提供的MSP430RF6989的硬件SPI总线例程编写程序,对硬件MSP-EXP430RF6989 Launch Pad+nRF24L01P射频模块(淘宝购买)进 ...

  2. JavaScript侧边悬浮框

    <script> window.onscroll=function(){ var oDiv=document.getElementById('div1'); var scrollTop=d ...

  3. Codeforces Round #379 (Div. 2) A B C D 水 二分 模拟

    A. Anton and Danik time limit per test 1 second memory limit per test 256 megabytes input standard i ...

  4. 我的第一个GitHub仓库

    GitHub 仓库地址 https://github.com/FBean/test.git GitHub 常用命令 add--Add file contents to the index bisect ...

  5. RestfulApi地址命名特点

    get /orders 全部get /orders/{id} 根据id查找get /orders/{number} 根据编号查找get /orders/name/{name} 根据名称查找post / ...

  6. SpringMVC,3种不同的URL路由配置方法

    1. 先说说一种比较常见的: <servlet> <servlet-name>theDispatcher</servlet-name> <servlet-cl ...

  7. css基础知识点

    回顾 1.结构标记 <header></header> <nav></nav> <section></section> < ...

  8. SPI

    SPI的通信原理以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,有4根线,单向传输时只要3根线. (1)MOSI(SDO) – 主设备数据输出,从设备数据输入(Master Out Sla ...

  9. HttpServletRequest常用获取URL的方法

    1.request.getRequestURL() 返回的是完整的url,包括Http协议,端口号,servlet名字和映射路径,但它不包含请求参数.2.request.getRequestURI() ...

  10. linux find命令

    Linux中find常见用法示例 ·find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} \; find命令的参数 ...