33from . import models
44from django .http import HttpResponse
55
6+ import datetime
7+ from django .core .exceptions import ObjectDoesNotExist
8+
69class BlogIndex (generic .ListView ):
710 queryset = models .Entry .objects .published ()
811 template_name = "home.html"
@@ -27,7 +30,19 @@ def get_client_ip(self):
2730 else :
2831 ip = self .request .META .get ("REMOTE_ADDR" , "" )
2932 return ip
30-
33+
34+ def tracking_hit_post (self ):
35+ entry = self .model .objects .get (pk = self .object .id )
36+ try :
37+ models .Entry_Views .objects .get (entry = entry , ip = self .get_client_ip (), session = self .request .session .session_key )
38+ except ObjectDoesNotExist :
39+ view = models .Entry_Views (entry = entry ,
40+ ip = self .request .META ['REMOTE_ADDR' ],
41+ created = datetime .datetime .now (),
42+ session = self .request .session .session_key )
43+ view .save ()
44+ return models .Entry_Views .objects .filter (entry = entry ).count ()
45+
3146 def get_context_data (self , ** kwargs ):
3247 context_data = super (BlogDetail , self ).get_context_data (** kwargs )
3348 related_entries = models .Entry .objects .filter (
@@ -37,6 +52,7 @@ def get_context_data(self, **kwargs):
3752 alltags = models .Tag .objects .all ()
3853
3954 context_data ['get_client_ip' ] = self .get_client_ip
55+ context_data ['tracking_hit_post' ] = self .tracking_hit_post ()
4056 context_data ['alltags' ] = alltags
4157 context_data ['count_tags' ] = related_entries .count
4258 context_data ['related_entries' ] = related_entries [:5 ] #limitation for post
@@ -45,4 +61,4 @@ def get_context_data(self, **kwargs):
4561
4662class PageDetail (generic .DetailView ):
4763 model = models .Page
48- template_name = "pages.html"
64+ template_name = "pages.html"
0 commit comments