3

我的模板标签中需要 request.path。但问题是,我的 django 版本是 1.5.1,我没有 . TEMPLATE_CONTEXT_PROCESSORS,所以没有django.core.context_processors.request. 现在,它给了我错误:

Exception Type: AttributeError
Exception Value:'str' object has no attribute 'path'
Exception Location:C:\Users\Nanyoo\web\pics\album\templatetags\active_tags.py in active, line 8

有没有其他方法可以在模板中获得所需的路径?

视图.py:

def home(request):
    photos = Photo.objects.all()
    return render(request,"index.html", {'photos':photos})

active_tags.py:

from django import template

register = template.Library()

@register.simple_tag
def active(request, pattern):
    import re
    if re.search(pattern, request.path):
        return 'active'
    return ''  
4

2 回答 2

1

请在 Context 字典中传递请求对象。

def home(request):
    photos = Photo.objects.all()
    return render(request,"index.html", {'photos':photos,'request':request})
于 2013-10-27T16:37:44.917 回答
0

如果您希望请求对象在您的模板中始终可用,您可以添加到默认模板上下文处理器。在这里查看答案:

Django 1.5 中的模板上下文处理器在哪里?

基本上,把它放在你的 settings.py 中:

import django.conf.global_settings as DEFAULT_SETTINGS

TEMPLATE_CONTEXT_PROCESSORS = DEFAULT_SETTINGS.TEMPLATE_CONTEXT_PROCESSORS + (
    'django.core.context_processors.request',
)
于 2014-07-18T18:41:46.453 回答