2012-05-10 3 views
0

Я пытаюсь выполнить действия, описанные здесь:Джанго: Ошибка при попытке добавить новое приложение

http://dev.svetlyak.ru/optional-email-in-django-comments-en/

, чтобы сделать поле «Адрес электронной почты» в комментариях приложении Django необязательным. В частности, я создал файл с именем «mycomments.py» со следующим содержимым:

from django import forms 
from django.contrib.comments.forms import CommentDetailsForm 
from django.utils.translation import ungettext, ugettext_lazy as _ 

class CommentForm(CommentDetailsForm): 
    email = forms.EmailField(label=_("Email address"), required=False) 

def get_form(): 
    return CommentForm 

И положил его в корневой папке для моего проекта Django (в ту же папку, которая содержит manage.py и settings.py). Затем я добавил 'mycomments' в файл settings.py следующим образом:

INSTALLED_APPS = (
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.sites', 
    'django.contrib.messages', 
    'django.contrib.staticfiles', 
    'django.contrib.admin', 
    'django.contrib.comments', 
    'blogs', 
    'mycomments', 
) 

COMMENTS_APP = 'mycomments' 

Но тогда, когда я 'питона manage.py runserver', я получаю следующее сообщение об ошибке:

Unhandled exception in thread started by <bound method Command.inner_run of <django.contrib.staticfiles.management.commands.runserver.Command object at 0x8bb208c>> 
Traceback (most recent call last): 

File "/usr/local/lib/python2.7/dist-packages/django/core/management/commands/runserver.py", line 88, in inner_run 
self.validate(display_num_errors=True) 

File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 249, in validate 
num_errors = get_validation_errors(s, app) 

File "/usr/local/lib/python2.7/dist-packages/django/core/management/validation.py", line 35, in get_validation_errors 
for (app_name, error) in get_app_errors().items(): 

File "/usr/local/lib/python2.7/dist-packages/django/db/models/loading.py", line 146, in get_app_errors 
self._populate() 

File "/usr/local/lib/python2.7/dist-packages/django/db/models/loading.py", line 61, in _populate 
self.load_app(app_name, True) 

File "/usr/local/lib/python2.7/dist-packages/django/db/models/loading.py", line 83, in load_app 
if not module_has_submodule(app_module, 'models'): 

File "/usr/local/lib/python2.7/dist-packages/django/utils/module_loading.py", line 17, in module_has_submodule 
for entry in package.__path__: # No __path__, then not a package. 

AttributeError: 'module' object has no attribute '__path__' 

И сервер dev не запускается. Я сделал что-то не так?

ответ

1

Приложение Django должно быть (как минимум) каталогом с __init__.py и models.py файлами. Поэтому создайте mycomments dir, введите код __init__.py и добавьте пустой models.py.

+0

Спасибо! Это решило проблему. Итак, в примере, приведенном в учебнике, к которому я привязался, автор просто создал dir с именем «firefly» и поместил свой код в файл с именем «my_comments.py» внутри этого каталога и оставил свой файл __init__.py пустым? – GChorn

+0

@GChorn Да, я так думаю. – DrTyrsa