tango_with_django_19 icon indicating copy to clipboard operation
tango_with_django_19 copied to clipboard

10.5 Client Side Cookies `<p>visits: {{ visits }}</p> can't work

Open shawshanks opened this issue 8 years ago • 5 comments

When I finished 10.5 section and run the server, my Firefox didn't show the number of times of visits on the screen. It just displayed visits:. In other words, I couldn't see the value of {{ visits }} .

While I checked my browser's cookie, it had the value of visists andlast_visit.

The problem confused me. Who can tell me why? I will be appreciated that .

shawshanks avatar Nov 09 '16 12:11 shawshanks

Can you check your spelling of visit.. you have:

visits (in your template)

and visists (in your browser)

Maybe in your view you saw the cookie as “visists” and not “visits”

L

On 9 Nov 2016, at 12:23, yamei [email protected] wrote:

When I finished 10.5 section and opened run the server, my Firefox didn't show the number of times of visits on the screen. It just displayed visits:. In other words, I couldn't see the value of {{ visits }} .

While I checked my browser's cookie, it had the value of visists andlast_visit.

The problem confused me. Who can tell me why? I will be appreciated that .

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/leifos/tango_with_django_19/issues/44, or mute the thread https://github.com/notifications/unsubscribe-auth/AB02B6XSoLzZVoHnHq8wC3Ku5mkCmF0nks5q8bs6gaJpZM4KtekA.

leifos avatar Nov 09 '16 12:11 leifos

@leifos Very thank you. But it's the typo of this Issue rather than code and I had corrected it.

Here is what I did next:

Just now I finished 10.6 Session Data. According to the tutorial, I edited views and cleared my browser's cookie entirely. And then I run the server, the browser got the correct value of visits. During the process, I didn't change the template of index.html.

After that, I carefully modified my view.py and made it returned to section 10.5 Client Side Cookies . But it also didn't work (as same as last time). My code is as follows:

def visitor_cookie_handler(request, response):
    visits = int(request.COOKIES.get('visits', '1'))

    last_visit_cookie = request.COOKIES.get('last_visit', str(datetime.now()))
    last_visit_time = datetime.strptime(last_visit_cookie[:-7], '%Y-%m-%d %H:%M:%S')

    # If it's been more than a day since the last visit..
    if (datetime.now() - last_visit_time).seconds > 1:
        visits = visits + 1
        # update the last visit cookie now that we have updated the count
        response.set_cookie('last_visit', str(datetime.now()))
    else:
        visits = 1
        # set the last visit cookie
        response.set_cookie('last_visit', last_visit_cookie)

    # Update/set the visits cookie
    response.set_cookie('visits', visits)


def index(request):
    category_list = Category.objects.order_by('-likes')[:5]
    page_list = Page.objects.order_by('-views')[:5]
    context_dict = {'categories': category_list, 'pages': page_list}

    response = render(request, 'rango/index.html', context_dict)
    visitor_cookie_handler(request, response)
    return response
    <p>Visits: {{ visits }}</p>
    <p>last_visit: {{ last_visit }}</p>

shawshanks avatar Nov 09 '16 13:11 shawshanks

Hmm.. I suspect that the visitor_cookie_handler() method needs to return the response object to index(), and then index needs to return that.

leifos avatar Nov 15 '16 16:11 leifos

Has this been resolved? What action should we take here?

maxwelld90 avatar Feb 03 '17 17:02 maxwelld90

Has anyone fixed this? I got mine to work, but as soon as I sign out and sign back in, the counter starts from 1 again.

NinjaOnRails avatar Jun 25 '17 20:06 NinjaOnRails