配置django-userena

时间:2011-07-24 20:30:38

标签: django authentication registration

对于我的新项目,我决定使用django-userena

我按照userena docs的说明操作。但是我收到了这个错误:

  

SiteProfileNotAvailable at / accounts / signin /

     

没有提供例外

并且不知道如何解决它。请帮忙!

3 个答案:

答案 0 :(得分:13)

当Django找不到您的个人资料时,您通常会获得SiteProfileNotAvailable。如“Storing additional information about users”中所述,您需要定义AUTH_PROFILE_MODULE以指向您的个人资料模型。

答案 1 :(得分:7)

正如wunki恰当地指出的那样,在settings.py文件中定义AUTH_PROFILE_MODULE以指向UserenaBaseProfileUserenaLanguageBaseProfile的子类非常重要。正如userena教程中所讨论的,这些通常放在新创建的“帐户”项目的models.py文件中。

但是,如果您已提供python manage.py runserver,我发现AUTH_PROFILE_MODULE将失败。如果您提供了AUTH_PROFILE_MODULE但仍然收到SiteProfileNotAvailable错误(在您应用的每个网址上),则可能是因为您未能在settings.py的INSTALLED_APPS列表中添加“帐户”。

答案 2 :(得分:4)

请尝试以下步骤:

  1. 在您的settings.py文件中,将'userena','guardian','easy_thumbnails'添加到您的INSTALLED_APPS元组中。

  2. 然后再次在settings.py文件中添加以下内容:

    AUTHENTICATION_BACKENDS = (  
        'userena.backends.UserenaAuthenticationBackend',  
        'guardian.backends.ObjectPermissionBackend',  
        'django.contrib.auth.backends.ModelBackend',  
    )  
    
    ANONYMOUS_USER_ID = -1  
    
  3. 以上用于让django-guardian工作(另一个自动安装的Django-Userena依赖项来控制权限)

    1. 接下来,为您的Django-Userena应用创建一个新应用。在命令提示符shell中,键入:python manage.py startapp accounts。我们正在为Django-Userena创建一个名为“accounts”的新应用程序。

    2. 现在将accounts添加到settings.py文件中的INSTALLED_APPS元组中。

    3. 将以下内容复制到accounts / models.py中:

      from django.contrib.auth.models import User  
      from django.utils.translation import ugettext as _  
      from userena.models import UserenaBaseProfile  
      
      class MyProfile(UserenaBaseProfile):  
          user = models.OneToOneField(User,unique=True,  
                        verbose_name=_('user'),related_name='my_profile')  
          favourite_snack = models.CharField(_('favouritesnack'),max_length=5)  
      
    4. 接下来将以下内容添加到settings.py文件中:

      AUTH_PROFILE_MODULE = 'accounts.MyProfile'  
      
      LOGIN_REDIRECT_URL = '/accounts/%(username)s/'  
      LOGIN_URL = '/accounts/signin/'  
      LOGOUT_URL = '/accounts/signout/'  
      
    5. AUTH_PROFILE_MODULE中的'accounts.MyProfile'指的是包含我们之前定义的模型类MyProfile的app'accounts'。 3个登录/注销URL语句告诉Django Django-Userena的URL可以在哪里工作。

      1. 将以下内容添加到'urlpatterns'元组下的urls.py中:

        (r'^accounts/', include('userena.urls')),  
        
      2. 配置您的Django SMTP电子邮件设置,以便在settings.py中使用Gmail:

        EMAIL_USE_TLS = True  
        EMAIL_HOST = 'smtp.gmail.com'  
        EMAIL_PORT = 587  
        EMAIL_HOST_USER = 'yourgmailaccount@gmail.com'  
        EMAIL_HOST_PASSWORD = 'yourgmailpassword'  
        
        1. 转到命令提示符shell并键入:

          python manage.py check_permissions

      3. 运行/ accounts / signin /