代码之家  ›  专栏  ›  技术社区  ›  the_drow

导入失败,出现异常错误

  •  0
  • the_drow  · 技术社区  · 15 年前

    我得到:

    templatesyntaxError位于/blog/post/test 呈现时捕获到名称错误: 未定义全局名称“Forms”

    对于这个代码:
    表单

    from dojango.forms import widgets
    from django.contrib.comments.forms import CommentForm
    from Website.Comments.models import PageComment
    
    class PageCommentForm(CommentForm):
        title = widgets.TextInput()
        rating = widgets.RatingInput()
    
        def get_comment_model(self):
            return PageComment
    
        def get_comment_create_data(self):
            # Use the data of the superclass, and add in the title field
            data = super(PageComment, self).get_comment_create_data()
            data['title'] = self.cleaned_data['title']
            return data
    

    模特儿

    from Website.CMS.models import Author, Rating
    from django.db.models import CharField, ForeignKey
    from django.contrib.comments.models import Comment
    
    class PageComment(Comment):
        title = CharField(max_length=300)
        parent = ForeignKey(Author, related_name='parent_id', null=True)
        author = ForeignKey(Author, related_name='author_id')
    
        def __unicode__(self):
            return self.title
    
    class CommentRating(Rating):
        comment = ForeignKey(PageComment)
    

    π介子

    from Website.Comments import *
    
    def get_model():
        return models.PageComment
    
    def get_form():
        return forms.PageCommentForm #error here
    

    直接在内部导入表单 初始化 Py的结果是:

    attributeError:“module”对象没有 属性“comments”

    这是堆栈跟踪,错误似乎来自Dojango,但这并不真正有意义:

    文件 “i:\wamp\www\website\comments_uu init_uuu.py”, 第1行 来自网站。注释导入模型,表单文件 “i:\wamp\www\website\comments\forms.py”, 第1行 从dojango导入表单文件“c:\python26\lib\site packages\dojango\forms\init_uuuuu.py”, 第2行 从widgets导入*文件“c:\python26\lib\site packages\dojango\forms\widgets.py”, 第11行 从dojango.util.config导入配置文件 “C:\python26\lib\site packages\dojango\util\config.py”, 第3行 从dojango.util导入媒体文件 “C:\python26\lib\site packages\dojango\util\media.py”, 第49行 用于设置中的应用程序。已安装的应用程序)文件 “C:\python26\lib\site packages\dojango\util\media.py”, 第49行 用于设置中的应用程序。已安装的应用程序)文件 “C:\python26\lib\site packages\dojango\util\media.py”, 第38行,在find_pp_dojo_dir_and_url中 media_dir=find_app_dojo_dir(app_name)文件 “C:\python26\lib\site packages\dojango\util\media.py”, 第27行,在find_pp_dojo_dir中 base=find_app_dir(app_name)文件 “C:\python26\lib\site packages\dojango\util\media.py”, 第20行,在find_pp_dir中 mod=GETATFR 进口 (m,,,[a]),a)

    注释应用程序位于已安装的应用程序中。 我该怎么办?

    编辑: 如果我试图直接在 import forms 我明白这一点:

    回溯(最近一次呼叫的最后一次): 文件“i:\wamp\www\website\manage.py”,第11行,in 执行\管理器(设置)
    文件“C:\python26\lib\site packages\django\core\management\uuuinit\uuuuu.py”,第行 438,执行经理 实用程序.execute()
    文件“C:\python26\lib\site packages\django\core\management\uuuinit\uuuuu.py”,第行 379,执行中 self.fetch_命令(子命令)。从_argv(self.argv)运行_
    文件“C:\python26\lib\site packages\django\core\management\base.py”,第191行, 运行中\来自\ argv self.execute(*参数,**选项。 双关语 )
    文件“C:\python26\lib\site packages\django\core\management\base.py”,第209行, 执行中 translation.activate('en-us')
    文件“c:\python26\lib\site packages\django\utils\translation\u init\uuuuuuy”,lin E 66,激活中 返回实际激活(语言)
    文件“C:\python26\lib\site packages\django\utils\functional.py”,第55行,in_ 咖喱的 返回curried_unc(*(args+moreags),**dict(kwargs,**morekwargs))
    文件“c:\python26\lib\site packages\django\utils\translation\u init\uuuuuuy”,lin E 36,在延迟装载机中 返回getattr(trans,实名)(*args,**kwargs)
    文件“c:\python26\lib\site packages\django\utils\translation\trans\real.py”,l INE 193,激活中 _ active[currentThread()]=翻译(语言)
    文件“c:\python26\lib\site packages\django\utils\translation\trans\real.py”,l INE 176,翻译 默认_translation=_fetch(settings.language_code)
    文件“c:\python26\lib\site packages\django\utils\translation\trans\real.py”,l INE 159,进城 app=导入模块(appname)
    文件“c:\python26\lib\site packages\django\utils\importlib.py”,第35行,在im中 端口模块 进口 (姓名)
    文件“i:\wamp\www\website\comments_uu init_uuu.py”,第2行,in 进口形式
    文件“i:\wamp\www\website\comments\forms.py”,第3行,in 从dojango.forms导入字段、小部件
    文件“C:\python26\lib\site packages\dojango\forms_uuu init_uuuu.py”,第2行,in 从小工具导入*
    文件“c:\python26\lib\site packages\dojango\forms\widgets.py”,第11行,in 从dojango.util.config导入配置
    文件“c:\python26\lib\site packages\dojango\util\config.py”,第3行,in 从dojango.util导入媒体
    文件“C:\python26\lib\site packages\dojango\util\media.py”,第49行,in 用于设置中的应用程序。已安装的应用程序)
    文件“C:\python26\lib\site packages\dojango\util\media.py”,第49行,in 用于设置中的应用程序。已安装的应用程序)
    文件“c:\python26\lib\site packages\dojango\util\media.py”,第38行,在find\u a中 pp dojo_dir_和url media_dir=find_app_dojo_dir(app_name)
    文件“c:\python26\lib\site packages\dojango\util\media.py”,第27行,在find兘a中 帕普多约迪尔 base=find_app_dir(app_name)
    文件“c:\python26\lib\site packages\dojango\util\media.py”,第20行,在find偅a中 PPDIR mod=GETATFR 进口 (m,,,[a]),a)
    attributeError:“module”对象没有属性“comments”

    删除Dojango的任何引用可以解决问题。

    2 回复  |  直到 13 年前
        1
  •  0
  •   the_drow    15 年前

    这是道扬戈的一个漏洞。
    我会报告的。

        2
  •  0
  •   Rostyslav Dzinko Ankit    13 年前

    在“初始”中输入以下内容:

    import forms