私は得る:
/ 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の参照を削除すると、問題が解決します。