0

私は得る:

/ blog / post / testでのTemplateSyntaxErrorレンダリング中にNameErrorが発生しました:グローバル名'forms'が定義されていません

このコードの場合:
forms.py

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

models.py

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)

__init__。py

from Website.Comments import *

def get_model():
    return models.PageComment

def get_form():
    return forms.PageCommentForm #error here

init .py内にフォームを直接インポートすると、次のようになります。

AttributeError:'module'オブジェクトに属性'Comments'がありません

これがスタックトレースです。エラーはdojangoから発生しているように見えますが、実際には意味がありません。

ファイル"I:\ wamp \ www \ Website \ Comments__init __。py"、1行目、Website.Commentsインポートモデル、フォームファイル "I:\ wamp \ www \ Website \ Comments \ forms.py"、1行目、 dojangoからインポートフォームファイル"C:\ Python26 \ lib \ site-packages \ dojango \ forms__init __。py"、2行目からウィジェットからインポート*ファイル "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行目、設定のアプリ用。INSTALLED_APPS)ファイル" C:\ Python26 \ lib \ site-packages \ dojango \ util\media。 py」、49行目、設定のアプリ用。INSTALLED_APPS)ファイル "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 = getattr(find_ pp_dir mod = getattr(find_ pp_dir mod = getattr(import(m、{}、{}、[a])、a)

コメントアプリはインストールされたアプリにあります。私は何をすべきか?

編集:フォームを直接インクルードしようとすると、次のimport formsようになります。

トレースバック(最後の最後の呼び出し):ファイル "I:\ wamp \ www \ Website \ manage.py"、行11、execute_manager(settings)
ファイル "C:\ Python26 \ lib \ site-packages \ django \ core \ management__init__ .py "、438行目、execute_manager Utility.execute()
ファイル" C:\ Python26 \ lib \ site-packages \ django \ core \ management__init__。py"、379行目、execute self.fetch_command(subcommand).run_from_argv( self.argv)
ファイル "C:\ Python26 \ lib \ site-packages \ django \ core \ management \ base.py"、行191、run_from_argv self.execute(* args、** options。dict ファイル
"C: \ Python26 \ lib \ site-packages \ django \ core \ management \ base.py "、行209、実行translation.activate('en-us')
ファイル"C:\ Python26 \ lib \ site-packages \ django \ utils \ translation__init __。py"、lin e 66、in activate return real_activate(language)
ファイル "C:\ Python26 \ lib \ site-packages \ django \ utils \ Functional.py "、55行目、_ curried return _curried_func(*(args + moreargs)、** dict(kwargs、** morekwargs))
ファイル" C:\ Python26 \ lib \ site-packages \ django \ utils \ translation__init__ .py "、lin e 36、in delayd_loader return getattr(trans、real_name)(* args、** kwargs)
File" C:\ Python26 \ lib \ site-packages \ django \ utils \ translation \ trans_real.py "、l ine 193、in activate _active [currentThread()] = translation(language)
ファイル"C:\ Python26 \ lib \ site-packages \ django \ utils \ translation \ trans_real.py"、l ine 176、in translation default_translation = _fetch(settings.LANGUAGE_CODE)
ファイル "C:\ Python26 \ lib \ site-packages \ django \ utils \ translation \ trans_real.py "、l ine 159、in _fetch app = import_module(appname)
File" C:\ Python26 \ lib \ site-packages \ django \ utils \ importlib.py "、line 35、in im port_module import(name)
ファイル "I:\ wamp \ www \ Website \ Comments__init __。py"、2行目インポートフォーム
ファイル "I:\ wamp \ www \ Website \ Comments \ forms.py"、3行目dojango.formsインポートフィールドから、ウィジェット
ファイル "C:\ Python26 \ lib \ site-packages \ dojango \ forms__init __。py"、2行目ウィジェットからのインポート*
ファイル"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行目、設定のアプリ用。INSTALLED_APPS)
ファイル"C:\ Python26 \ lib \ site-packages \ dojango \ util \ media.py"、49行目、設定のアプリ用。INSTALLED_APPS)
ファイル "C:\ Python26 \ lib \ site-packages \ dojango \ util \ media .py "、38行目、find_a pp_dojo_dir_and_url media_dir = find_app_dojo_dir(app_name)
ファイル" C:\ Python26 \ lib \ site-packages \ dojango \ util \ media.py "、27行目、find_a pp_dojo_dir base = find_app_dir(app_name)で
ファイル"C:\ Python26 \ lib \ site-packages \ dojango \ util \ media.py"、行20、find_a pp_dir mod = getattr(import(m、{}、{}、[a])、a)
AttributeError :'module'オブジェクトには属性'Comments'がありません

dojangoの参照を削除すると、問題が解決します。

4

2 に答える 2

0

これはdojangoのバグです。
報告します。

于 2010-08-13T06:53:32.340 に答える
0

__init__.pyに次のように入力します。

import forms
于 2010-08-08T04:39:30.217 に答える