Newbie : Help for using RequestContext

16 views
Skip to first unread message

Mickae...@gmail.com

unread,
Jan 9, 2018, 7:30:06 PM1/9/18
to Django users
Hello to all Django users :-)

I'm new to Django and this is my first post.

I'd like to implement breadcrumbs on all my pages.

My strategy is to create a middleware and to use RequestContext to
add a dict to the context of each request then use the context in my html

My problem is that I don't understand how to link RequestContext to
my request. Hereafter my code :

my_middleware.py
from django.template import RequestContext


class SimpleBreadcrumbs(object):
   
def __init__(self, get_response):
       
self.get_response = get_response
       
# One-time configuration and initialization.


   
def __call__(self, request):
       
# Code to be executed for each request before
       
# the view (and later middleware) are called.

        request_context
= RequestContext(request)
        request_context
.push({"level0": "Adrian", "level1": "Thomas"})

        response
= self.get_response(request)


       
# Code to be executed for each request/response after
       
# the view is called.

       
return response


my_template.html

{% extends 'pricing/body.html' %}

{% block content %}

{{ level0 }}

{% endblock content %}


What I'm doing wrong ?

Thx for your help

Micka
Django newbie
;-)





Andréas Kühne

unread,
Jan 10, 2018, 3:36:46 AM1/10/18
to django...@googlegroups.com
Hi Micka,

And welcome to django.

Regarding how to add things in middleware - you can add the information to the session like this:

class SimpleBreadcrumbs(object):
    
def __init__(self, get_response):
        
self.get_response = get_response
        
# One-time configuration and initialization.


    
def __call__(self, request):
        
# Code to be executed for each request before
        
# the view (and later middleware) are called.


        request.session['breadcrumbs'] = {"level0": "Adrian", "level1": "Thomas"}

        response = self.get_response(request)


        
# Code to be executed for each request/response after
        
# the view is called.

        
return response


Then in your templates you can do this:

{% extends 'pricing/body.html' %}

{% block content %}

{{ breadcrumbs.level0 }} / {{ breadcrumbs.level1 }}

{% endblock content %}

Regards,

Andréas

--
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.
To post to this group, send email to django...@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/6cf0e65a-2b48-4bbb-a8a7-0351252e49f9%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

mickae...@gmail.com

unread,
Jan 10, 2018, 6:56:22 AM1/10/18
to Django users
Oh, Thank you Andréas for your kind attention and your reactivity.

Nice, I didn't know about request.session... And thanks to you, now I Know :-)

Just for archive, I found a way with context_processors here (old django version, but I adapt to django 2) :
http://apprendre-python.com/page-django-context-processor-template

Very happy to join Django community :D

Micka

Andréas

To unsubscribe from this group and stop receiving emails from it, send an email to django-users...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages