python越来越火,很多朋友从事web方向,Django框架是从事最多的框架,今天小猿圈为大家详解一下Django浏览页面点击数,有兴趣的朋友可以学习一下,不管做什么网站,这个知识点是肯定会用到的。
通常情况下在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,写了下面这个:
对应的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浏览页面的点击数了吗?感觉有疑问的,多看两遍,相信大家会掌握的;感兴趣的,可以去小猿圈学习更多东西, 学习在于每天进步一点点。