The 'core' problem as you say, is essentially the core problem of all programming: programs don't write themselves. You have to write appropriate code for what you are trying to do, what does it matter if someone forgets to add the username to the render call, or if someone forgets to add the <p> tags and the expected variable to the template? At some point you have to expect developers to write appropriate code. Even if there were a magic template tag that had direct access to the request object automatically, there is nothing stopping a developer from creating a new template and not using it. Personally, I would'nt spend too much more time on this issue, either use RequestContext or pass the request.user to your template and leave it at that. You could probably create a test that checked this and it may be prudent to put comments in the view or templates or a separate developers guide for your app to call out things like this. If you are really that concerned, you could always do something like this in your template:
{% if username %} <p>Hello {{username}}</p> {% else %} <p>Hello Nameless One. I wanted to address you by your proper name, but unfortunately some developer forgot to pass a variable to the template used to render me! You should call and complain.<p/> {% endif %} :) -richard On 6/24/08, Huuuze <[EMAIL PROTECTED]> wrote: > > > Correct me if I'm wrong, but I'm not sure this resolves the core > problem. In your example, I still need to add something (in this > case, 'context_instance=RequestContext(request)') to my > "render_to_response" statements. I'd like to eliminate that > completely since it requires a developer to add something to the > render_to_response to get the username to render. If the developer > forgets to add that, then the username doesn't display. > > Long story short, is there a way to get the username to render using a > call that lives in the template and doesn't require repeated > references to a value in the view? In other words, if I have five > pages and five distinct methods in the view that each have a > render_to_response, how can I avoid adding five > 'context_instance=RequestContext(request)' values to my > render_to_response statements? > > I apologize in advance if using RequestContext does resolve this issue > -- still learning! > > > On Jun 24, 10:02 am, "Johan Liseborn" <[EMAIL PROTECTED]> > wrote: > > On Tue, Jun 24, 2008 at 15:47, Huuuze <[EMAIL PROTECTED]> wrote: > > > > > A n00b question for everyone: My base template has a "Welcome > > > <username>" section in it. Currently, I'm adding the username (which > > > is coming from Django's auth/auth framework) to the template with the > > > following bit of code: > > > > > <p>{{ request.session.user.username }}</p> > > > > > This works, however, it requires me to add the "request" object to any > > > return statement that deals with displaying a page: > > > > > return render_to_response('somepage.html', {'request':request}) > > > > > I'm guessing there's a better way to do this, but I can't seem to find > > > an answer. Help! > > > > I believe you can use django.template.RequestContext to accomplish > > what you want; in your view, do something like: > > > > from django.template import RequestContext > > > > <snip> > > > > return render_to_response('somepage.html', > > context_instance=RequestContext(request)) > > > > That will, among other things (and depending on the > > TEMPLATE_CONTEXT_PROCESSORS variable in your settings.py) populate the > > request-object with a "user" field. > > > > You can read more here: > http://www.djangoproject.com/documentation/templates_python/#subclass... > > > > Cheers, > > > > johan > > > > -- > > Johan Liseborn > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-users@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/django-users?hl=en -~----------~----~----~----~------~----~------~--~---