导入错误Django-profiles

时间:2011-08-25 13:24:11

标签: django

我正在努力让django-profiles工作。

我按照this manual ("The Missing Manual")

的步骤操作

所以:

  • 我在同一个项目中工作,我也用于django-registration(所以没有创建应用!!!)
  • 在我的模板中,我创建了一个文件夹“/ profiles”(包括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
    

    这是form.py中的导入...

    我做错了什么?

修改

我的forms.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 个答案:

答案 0 :(得分:1)

因此导入语句似乎试图导入名为“ourcrestmont / itaco / models.py”的文件。确保存在。

(通过django模型,看起来它是一个名为ourcrestmont的项目,名为itaco的应用程序)

如果存在,请确保itaco和ourcrestmont都包含 init .py文件。

可以只有项目(在这种情况下导入行来自projectname.models导入模型名称)但我建议坚持标准布局并将模型,表单和视图放在一起在项目下的应用程序中,即使您当前只看到您的项目有一个应用程序。 (因为它没有,它至少有三个,因为注册和配置文件 django应用程序,如果你看到我的意思,它们只是你所做的django应用程序,并且考虑到它可能会使依赖性和包含错误更容易解决。当然,每个其他django应用程序都会假设大多数东西都在应用程序内部。)