1

我继承了一个 Django 应用程序,我需要使用自定义模板过滤器对其进行修改。我对 Django 完全陌生,对此我感到非常困惑。我以为我完全按照说明进行了操作,并且还遵循了其他帖子中有关该主题的所有建议,但是当我在模板中包含以下行时仍然出现错误:

{% load mlgb_custom_filters %}

我的目录结构如下:

mysite (i.e. the project)    
    __init__.py    
    mlgb/ (i.e. the app)    
      __init__.py    
      templatetags/    
          __init__.py    
          mlgb_custom_filters.py    

mlgb_custom_filters.py 的代码如下:

from django import template    
from django.template.defaultfilters import stringfilter    
register = template.Library()    
@register.filter(name='fix_dashes')    
@stringfilter    
def fix_dashes( value ):    
    return value.replace( '--', 'DASH' )    
if __name__ == "__main__":    
    testvar = fix_dashes( "ouch -- ow -- I hate django" )    
    print testvar    

如您所见,我添加了一个 'name = main' 部分,让我在独立模式下运行它,只是为了检查该特定文件中没有错误,并且在独立模式下运行时很好。

根据其他人的建议,我也尝试将其导入另一个文件,只是为了查看是否存在导入错误,再一次,如果我将其添加到 settings.py 的末尾就可以了(在使用 dev服务器):

尝试:导入 mlgb.templatetags.mlgb_custom_filters 例外,exc: print 'error importing mlgb_custom_filters' print exc

此外,settings.py 中的 INSTALLED_APPS 包含“mysite.mlgb”行,我还尝试在其中放置“mlgb”而不是“mysite.mlgb”,正如另一个人所建议的那样。每次进行更改时,我都会重新启动开发服务器。

到目前为止,我想我已经尝试了我在网上找到的每一个建议。有没有人有任何新的想法?我继承了一个目录结构,其中模板目录与应用程序不在同一结构内,即它不在 mysite 下,这可能与此有关吗?在这里刮桶寻找想法!我希望有人能帮帮忙。

4

2 回答 2

2

好的,在我第一次发布这个问题时的情况下,似乎我真正需要做的就是触摸wsgiappname/apache目录下的文件以强制刷新应用程序。昨天的初步回答是红鲱鱼。基本上我应该碰过文件myproject/myapp/apache/myapp.wsgi。然后也许重新启动Apache以获得良好的效果?但是造成混淆的原因是,显然仅仅重新启动 Apache 或手动重新编译 Python 是不够的。为了获取我的更改,似乎我需要触摸那个 wsgi 文件。那么一切都很好。

于 2012-04-17T14:09:18.473 回答
0

在我的同事 Masud Khokhar 的帮助下,我现在可以发布自己的问题的答案,他出色的侦探工作挽救了这一天。回顾一下,我的应用程序运行良好,直到我将“加载”语句添加到我的模板文件之一,以加载“自定义过滤器”模块。Masud 发现现在我需要在 urls.py 中使用模板文件的完整/绝对路径,而不是像以前那样使用相对路径(并且以前可以使用,直到它需要加载自定义过滤器模块)。因此,在 urls.py 中,我有一段代码如下:

 url(r'^book/(?P<object_id>\d+)/$', 'list_detail.object_detail',
     kwargs={
        'queryset':Book.objects.all(),
        'template_name' : 'mlgb/mlgb_detail.html'
     },
     name='mlgb_detail'
 ),

而不是这个:

        'template_name' : 'mlgb/mlgb_detail.html'

我需要这样的东西:

        'template_name' : '/THE_FULL_PATH/mlgb/templates/mlgb/mlgb_detail.html'

做出改变 - 排序!再次感谢你,马苏德。

于 2012-04-16T10:35:21.050 回答