django自定义模板标签 - 导入模型博客错误

时间:2018-02-20 23:42:10

标签: python django django-models

我正在尝试导入名为BlogDetails的模型类,以便在我的自定义模板标记页中使用。

这是我的应用程序的结构:

appname (directory)
  -->core (directory)
    -->models.py (file)
    -->templatetags (directory)
      -->customised_template_tags.py (file)

以下是customised_template_tags.py文件中的import语句。这与我在视图文件中使用的其他import语句的结构相同:

import datetime
import os

from django import template
from django.conf import settings
from django.templatetags.static import static
from django.utils.safestring import mark_safe
from django.utils.translation.trans_real import gettext

from appname.common.utils import get_supported_language_code
from appname.core.models import BlogDetails

register = template.Library()

以下是导入models.py文件中代码的customised_template_tags.py文件第76行(在错误消息中提到)的import语句:

from appname.core.templatetags.customised_template_tags import absolute_static, alternative_file, \
    file_url

以下是错误消息:

  File "C:\Users\me\desktop\appname\appname\core\models.py", line 76, in <module>
    from appname.core.templatetags.customised_template_tags import absolute_static, alternative_file, \
  File "C:\Users\me\desktop\appname\appname\core\templatetags\customised_template_tags.py", line 11, in <module>
    from appname.core.models import BlogDetails
ImportError: cannot import name 'BlogDetails'

我已重新启动了我的开发服务器,并且我已阅读此thread并按照答案中的建议进行操作,并且我还阅读了django docs

有人可以建议解决我的问题吗?

1 个答案:

答案 0 :(得分:4)

您进行循环导入:

  1. appname.core.models尝试导入appname.core.templatetags.customised_template_tags
  2. appname.core.templatetags.customised_template_tags尝试导入appname.core.models
  3. 由于appname.core.models尚未加载,因此无法导入,因此无效。
  4. 快速修复:

    在标记功能中导入模型。
    或者相反,只在您使用它的函数中导入标记。