1

尝试加载自定义模板标签时,出现错误

'myapp' is not a valid tag library: ImportError raised loading myapp.templatetags.myapp: No module named models

问题在于 templatetags/myapp.py 无法加载模型->“myapp:没有名为模型的模块”。为什么以下行在 myapp/templatetags/myapp.py 中失败?

from myapp.models import Mymodel

为了提供一些细节,我有以下几点:

myproject
 |
  --myapp
 |   |
 |   --templatetags
 |   |   |
 |   |    --__init__.py
 |   |    --myapp.py
 |   --__init__.py
 |   --models.py
 |   --views.py
 |
  --myapp2
 |   |
 |   --templatetags
 |   --__init__.py
 |   --models.py
 |   --views.py

在 template/myapp2/showsomething.html 中,我有以下内容

{% load myapp %}

在 myapp/templatetags/myapp.py 中,我有以下内容

from myapp.models import Mymodel
register = Library()

@register.inclusion_tag('myapp/myapp.html')
def myapp():
    #....somecode ...   
    return {'some': 'value}

在 myapp/models.py 中,我有以下内容

from django.db import models
class Mymodel(models):
    ...some model code

在 settings.py 中,我有

...some other settings code ...

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.admin',
    'myapp',
    'myapp2',

)

4

1 回答 1

1

Django 可能因为同名而感到困惑。尝试将文件 myapp.py 重命名为其他名称。此外,您需要将模板标签应用程序添加到已安装的应用程序中,并确保模板标签具有该__init__.py文件。更多信息可以在这里找到

于 2012-12-14T04:51:08.930 回答