Blogger Information
Blog 75
fans 0
comment 0
visits 55302
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
小猿圈之Django 浏览页面点击计数(通用视图)
聆听的博客
Original
624 people have browsed it

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浏览页面的点击数了吗?感觉有疑问的,多看两遍,相信大家会掌握的;感兴趣的,可以去小猿圈学习更多东西, 学习在于每天进步一点点。

Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post