Импорт завершается неудачно со странной ошибкой - PullRequest
0 голосов
/ 08 августа 2010

Я получаю:

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 решает проблему.

Ответы [ 2 ]

0 голосов
/ 13 августа 2010

Это ошибка в додзанго.
Я сообщу об этом.

0 голосов
/ 08 августа 2010

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

import forms
...