Ошибка импорта Django-профилей - PullRequest
0 голосов
/ 25 августа 2011

Я пытаюсь заставить работать django-профили.

Я следую инструкциям этого руководства ("The Missing Manual") ,

, поэтому:

  • Я работаю в том же проекте, который я также использую для регистрации django (поэтому приложение не создано !!!)
  • В моих шаблонах я создал папку "/ profile"(включая edit_profile.html)
  • Мой AUTH_PROFILE_MODULE установлен в 'myProjectName.UserProfile'
  • Я создал в своей папке проекта models.py, содержащей:

    from django.db import models
    
    class UserProfile(models.Model):
        user = models.ForeignKey(User, unique=True)
        first_name = models.CharField(_('first name'), max_length=100)
        middle_name = models.CharField(_('middle name'), blank=True, max_length=100)
        last_name = models.CharField(_('last name'), max_length=100)
        birth_date = models.DateField(_('birth date'), blank=True, null=True)
    
  • В папке моего проекта я создал файл forms.py с тем же кодом, что и в руководстве
  • В urls.py моего проекта я добавил:

    from myProjectName.forms import ProfileForm
        ('^profiles/edit', 'profiles.views.edit_profile',{'form_class':ProfileForm,'success_url':'/my/custom/url',}),
        (r'^profiles/', include('profiles.urls')),
    

    Итак, теперь весь файл urls.py моего проекта:

    from django.conf.urls.defaults import *
    from django.views.generic.simple import direct_to_template
    from django.contrib import admin
    from myProjectName.forms import ProfileForm
    admin.autodiscover()
    
    urlpatterns = patterns('',
        (r'^admin/', admin.site.urls),
        (r'^accounts/', include('registration.urls')),
        (r'^$', direct_to_template,
        { 'template': 'index.html' }, 'index'),
        ('^profiles/edit', 'profiles.views.edit_profile', {'form_class': ProfileForm,'success_url':'/my/custom/url',}),
        (r'^profiles/', include('profiles.urls')),
    )
    

    Когда я сейчас получаю доступ http://127.0.0.1:8000/profiles/edit/, Я получаю эту ошибку:

    Exception Value:    No module named ourcrestmont.itaco.models
    

    Это импорт, расположенный в forms.py ...

    Что я делаю не так?

РЕДАКТИРОВАТЬ:

Код моей формы.py:

from django.db import models
from django.forms import ModelForm
from ourcrestmont.itaco.models import *

class ProfileForm(ModelForm):
  class Meta:
      model = Foo
      exclude = ('field1','field2','field3',)

Этоточно такой же код, как в руководстве, или этот код не подходит?(кто-нибудь может дать другой, лучший код?)

1 Ответ

1 голос
/ 25 августа 2011

Таким образом, оператор import пытается импортировать файл с именем "ourcrestmont / itaco / models.py".Убедитесь, что он существует.

(по модели django, который выглядит так, как будто это проект под названием ourcrestmont с приложением itaco)

Если он существует, убедитесь, что оба itaco и ourcrestmont имеют init .py файлов в них.

Вы можете просто иметь проект (строка импорта в этом случае взята из projectname.models import model name), но я бы порекомендовалпридерживаясь стандартного макета и соединяя ваши модели, формы и представления в приложении под проектом, даже если вы в настоящее время видите свой проект как имеющий одно приложение.(Поскольку его нет, у него есть по крайней мере три, поскольку регистрация и профили - это также приложения django, они просто приложения django вне того, что вы сделали, если вы понимаете, что я имею в виду, иДумая об этом, это может облегчить решение проблем зависимости и включения. Конечно, любое другое приложение django будет предполагать, что большинство вещей находятся внутри приложения)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...