Я получаю:
TemplateSyntaxError в / blog / post / test Поступил 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 import«C: \ Python26 \ lib \ site-packages \ dojango \ util \ config.py ", строка 3, из файла импорта медиафайлов dojango.util для импорта Файл" C: \ Python26 \ lib \ site-packages \ dojango \ util \ media.py ", строка49, для приложения в settings.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 (имя_приложения) Файл" C: \ Python26 \ lib \ site-packages \ dojango \ util \ media.py ", строка27, в find_pp_dojo_dir base = find_app_dir (имя_приложения) Файл "C: \ Python26 \ lib \ site-packages \ dojango \ util \ media.py", строка 20, в find_ pp_dir mod = getattr ( import (m, {}, {}, [a]), a)
Приложение «Комментарии» находится в установленных приложениях.Что мне делать?
РЕДАКТИРОВАТЬ: Если я пытаюсь включить формы непосредственно с import forms
, я получаю это:
Traceback (последний вызов был последним): Файл "I: \wamp \ www \ Website \ manage.py ", строка 11, в execute_manager (настройки)
Файл" C: \ Python26 \ lib \ site-packages \ django \ core \ management__init __. py ", строка 438, в утилите execute_manager.execute ()
Файл "C: \ Python26 \ lib \ site-packages \ django \ core \ management__init __. py", строка 379, в файле execute self.fetch_command (подкоманда) .run_from_argv (self.argv)
Файл "C: \ Python26 \ lib \ site-packages \ django \ core \ management \ base.py", строка 191, в run_from_argv self.execute (* аргументы, ** параметры. dict )
Файл "C: \ Python26 \ lib \ site-packages \ django \ core \ management \ base.py", строка 209, в файле execute translation.activate ('en-us') *
Файл "C: \ Python26 \"lib \ site-packages \ django \ utils \ translation__init __. py ", lin e 66, in activ return real_activate (language)
Файл" C: \ Python26 \ lib \ site-packages \ django \ utils \ functions.py "строка 55, в _ curried return _curried_func (* (args + moreargs), ** dict (kwargs, ** morekwargs))
Файл "C: \ Python26 \ lib \ site-packages \ django \ utils \ translation__init __. py", строка 36, в delayed_loader возвращаем getattr (trans, real_name) (* args, ** kwargs)
Файл "C: \ Python26 \ lib \ site-packages \ django \ utils \ translation \ trans_real.py", строка 193, вактивировать _active [currentThread ()] = перевод (язык)
Файл "C: \ Python26 \ lib \ site-packages \ django \ utils \ translation \ trans_real.py", стр. 176, в переводе default_translation = _fetch (настройки.LANGUAGE_CODE)
Файл "C: \ Python26 \ lib \ site-packages \ django \ utils \ translation \ trans_real.py", стр. 159, в _fetch app = import_module (appname)
Файл "C: \Python26 \ lib \ site-packages \ django \ utils \ importlib.py ", строка 35, в 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 import 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 (имя_приложения)
Файл "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 решает проблему.