Настройка django-userena

для моего нового проекта я решил использовать django-userena

Я выполнил инструкции userena docs. Однако я получаю эту ошибку:

SiteProfileNotAvailable at/accounts/signin/

Исключено исключение

и не знаю, как это исправить. Пожалуйста, помогите!

Ответ 2

Как удачно заметил wunki, важно определить AUTH_PROFILE_MODULE в файле settings.py, чтобы указать ваш подкласс UserenaBaseProfile или UserenaLanguageBaseProfile. Как описано в учебнике userena, они обычно помещаются внутри файла models.py вашего недавно созданного проекта "учетные записи".

Однако я обнаружил, что python manage.py runserver завершится с ошибкой, если вы уже предоставили AUTH_PROFILE_MODULE. Если вы предоставили AUTH_PROFILE_MODULE и по-прежнему получаете ошибку SiteProfileNotAvailable (по каждому URL вашего приложения), возможно, вам не удалось добавить "учетные записи" в список INSTALLED_APPS в settings.py.

Ответ 3

Попробуйте выполнить следующий шаг:

  • В файле settings.py добавьте userena, guardian, easy_thumbnails к вашему кортежу INSTALLED_APPS.

  • Затем снова в файле settings.py добавьте следующее:

    AUTHENTICATION_BACKENDS = (  
        'userena.backends.UserenaAuthenticationBackend',  
        'guardian.backends.ObjectPermissionBackend',  
        'django.contrib.auth.backends.ModelBackend',  
    )  
    
    ANONYMOUS_USER_ID = -1  
    

Выше используется для работы django-guardian (другая зависимость Django-Userena автоматически устанавливается для управления разрешениями)

  1. Затем создайте новое приложение для своего приложения Django-Userena. В командной строке командной строки введите: python manage.py startapp accounts. Мы создаем новое приложение для учетных записей "Django-Userena".

  2. Теперь добавьте accounts в ваш файл INSTALLED_APPS в файле settings.py.

  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/'  
    

"accounts.MyProfile в AUTH_PROFILE_MODULE относится к учетным записям приложения, содержащим класс MyProfile модели, как мы определили ранее. Три пользовательских URL-адреса входа/выхода указывают Django, где должны быть URL-адреса для Django-Userena.

  1. Добавьте в urls.py следующее: 'urlpatterns tuple:

    (r'^accounts/', include('userena.urls')),  
    
  2. Настройте параметры электронной почты Django SMTP для использования Gmail в settings.py:

    EMAIL_USE_TLS = True  
    EMAIL_HOST = 'smtp.gmail.com'  
    EMAIL_PORT = 587  
    EMAIL_HOST_USER = '[email protected]'  
    EMAIL_HOST_PASSWORD = 'yourgmailpassword'  
    
    1. Перейдите в оболочку командной строки и введите:

      python manage.py check_permissions

run/accounts/signin/