Сбой при импорте из-за странной ошибки

Я получил:

TemplateSyntaxError в / blog / post / test Caught 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: объект 'модуль' не имеет атрибута 'Комментарии'

Вот трассировка стека, похоже, ошибка исходит от 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, для приложения в настройках. УСТАНОВЛЕННОЕ_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) File" C: \ Python26 \ lib \ сайты-пакеты \ dojango \ uti l \ 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 (импорт (m, {}, {}, [a]), a)

Приложение Комментарии находится в установленных приложениях. Что я должен делать?

РЕДАКТИРОВАТЬ: Если я попытаюсь включить формы напрямую с import forms, я получу следующее:

Удаление любой ссылки на dojango решает проблему.

Это ошибка в dojango.
Я сообщу об этом.


person the_drow    schedule 08.08.2010    source источник


Ответы (2)


поместите в __init__.py следующее:

person the_drow    schedule 13.08.2010

потому что он находится внутри init .py, я не могу указать полный путь к модулю? Но почему удаление

import forms
и всех ссылок на dojango помогает? Это потому, что в dojango также есть приложение для форм? Я запутался. Подскажите, почему возникает эта ошибка?

import forms
person Matt Williamson    schedule 08.08.2010
comment
да, я считаю, что есть django.forms. Вы можете попробовать: из форм импорта my_project, где my_project - это имя корневого каталога, в котором вы находитесь, я думаю, Website в вашем случае. - person the_drow; 08.08.2010
comment
Когда я использую формы импорта из Website.Comments, я тоже получаю сообщение об ошибке, подробности см. В вопросе. - person Matt Williamson; 08.08.2010
comment
Я уверен, что проблема в dojango.forms. Есть идеи, почему? - person the_drow; 08.08.2010
comment
Отслеживание (последний вызов последним): файл «I: \ wamp \ www \ Website \ manage.py», строка 11, в execute_manager (настройки)
Файл «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 (подкоманда) .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", строка 66, при активации return real_activate (язык)
Файл "C: \ Python26 \ lib \ site-packages \ django \ utils \ financial.py ", строка 55, в _ curried return _curried_func (* (args + morear gs), ** dict (kwargs, ** morekwargs))
Файл "C: \ Python26 \ lib \ site-packages \ django \ utils \ translation__init __. py", строка 36, в delayed_loader return getattr (trans, real_name) (* args, ** kwargs)
Файл "C: \ Python26 \ lib \ site-packages \ django \ utils \ translation \ trans_real.py", line 193, in activate _active [currentThread ()] = перевод (язык)
Файл "C: \ Python26 \ lib \ site-packages \ django \ utils \ translation \ trans_real.py", строка 176, в переводе default_translation = _fetch (settings.LANGUAGE_CODE)
File " C: \ Python26 \ lib \ site-packages \ django \ utils \ translation \ trans_real.py ", строка 159, в _fetch app = import_module (имя приложения)
Файл" 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 im поля порта, виджеты
Файл "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, in from dojango.util import media
Файл "C: \ Python26 \ lib \ site-packages \ dojango \ util \ media.py", строка 49, in for app в настройках. INSTALLED_APPS)
Файл "C: \ Python26 \ lib \ site-packages \ dojango \ util \ media.py", строка 49, в для приложения в settings.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: объект 'модуль' не имеет атрибута 'Комментарии' - person the_drow; 08.08.2010