Форум сайта python.su
Доброго врени суток!
Хотел написать свой контекстный процессор.
файл context_processors.py(коморый находиться в папке core1 моего проэкта):
# -*- coding: utf-8 -*-
from django.core.context_processors import request
from django.template import RequestContext
from django.shortcuts import render_to_response
def vas(request):
prosto = "sdfsdf"
if hasattr(request, 'vas'):
return {'vas':prosto,}
TEMPLATE_CONTEXT_PROCESSORS = (
#стандартные
'django.core.context_processors.auth',
'django.core.context_processors.debug',
'django.core.context_processors.i18n',
'django.core.context_processors.media',
'django.core.context_processors.request',
'multilingual.context_processors.multilingual',
#свои
'core1.context_processors.vas',
)
{{vas}}
Отредактировано (Дек. 18, 2009 10:30:31)
Офлайн
видать RequestContext не передаёшь во вьюшке или не срабатывает условие if hasattr(request, ‘vas’)
Офлайн
Написал вот так и заработало:
return render_to_response(template, {'menu_types': menu_types, }, context_instance=RequestContext(request))
Офлайн
ну, нужно просто в каждой вьюхе прописывать то, что ты берешь не обычный контекст, а RequestContext.
Офлайн
helm2004
напиши декоратор или возьми render_to
Офлайн
Тоже не могу разобраться, есть процессор который находиться в корне проекта-
my_context_processors.py
def Comment_processors(request):
return {
'news': news,
'form': form,
'comment_count': comment_count,
'comments': comments}
TEMPLATE_CONTEXT_PROCESSORS = (
'django.core.context_processors.auth',
'django.core.context_processors.debug',
'django.core.context_processors.i18n',
'django.core.context_processors.media',
'my_context_processors.Comment_processors'
@login_required
def news_detail(request, news_id):
news = News.objects.get(pk=news_id)
if request.method == 'POST':
form = CommentForm(request.POST)
if form.is_valid():
comment = Comment(
news=news,
username = request.user.username,
text = form.cleaned_data['text'])
comment.save()
return HttpResponseRedirect(
reverse('news.news_detail', kwargs={'news_id':news_id}))
else:
form = CommentForm()
comments = Comment.objects.filter(news=news)
comment_count = comments.count()
return render_to_response('news/news_detail.html',
context_instance=RequestContext(request))
return render_to_response('news/news_detail.html',
RequestContext(request, {
'news':news,
'form':form,
'comment_count':comment_count,
'comments':comments}))
Отредактировано (Дек. 18, 2009 21:07:34)
Офлайн
Malinaizerhttp://www.b-list.org/weblog/2006/jun/14/django-tips-template-context-processors/
Тоже не могу разобраться, есть процессор который находиться в корне проекта-
my_context_processors.pyвот представлениеdef Comment_processors(request):
return {
'news': news,
'form': form,
'comment_count': comment_count,
'comments': comments}
TEMPLATE_CONTEXT_PROCESSORS = (
'django.core.context_processors.auth',
'django.core.context_processors.debug',
'django.core.context_processors.i18n',
'django.core.context_processors.media',
'my_context_processors.Comment_processors'почему не работает процессор вылазит исключение global name ‘news’ is not defined?@login_required
def news_detail(request, news_id):
news = News.objects.get(pk=news_id)
if request.method == 'POST':
form = CommentForm(request.POST)
if form.is_valid():
comment = Comment(
news=news,
username = request.user.username,
text = form.cleaned_data['text'])
comment.save()
return HttpResponseRedirect(
reverse('news.news_detail', kwargs={'news_id':news_id}))
else:
form = CommentForm()
comments = Comment.objects.filter(news=news)
comment_count = comments.count()
return render_to_response('news/news_detail.html',
context_instance=RequestContext(request))
Вот так работает-return render_to_response('news/news_detail.html',
RequestContext(request, {
'news':news,
'form':form,
'comment_count':comment_count,
'comments':comments}))
Офлайн
tezroСпасибо разобрался!
Офлайн
Malinaizer
Один вопрос - один тред. А то потом не треды, а мешанина из вопросов и ответов.
Офлайн
Значит так, взял декоратор и как ни странно заработало! Спасибо всем!
Офлайн