для моего нового проекта я решил использовать django-userena
Я выполнил инструкции userena docs. Однако я получаю эту ошибку:
SiteProfileNotAvailable at/accounts/signin/
Исключено исключение
и не знаю, как это исправить. Пожалуйста, помогите!
для моего нового проекта я решил использовать django-userena
Я выполнил инструкции userena docs. Однако я получаю эту ошибку:
SiteProfileNotAvailable at/accounts/signin/
Исключено исключение
и не знаю, как это исправить. Пожалуйста, помогите!
Обычно вы получаете SiteProfileNotAvailable
, когда Django не может найти ваш профиль. Как указано в " Сохранении дополнительной информации о пользователях", вам необходимо определить AUTH_PROFILE_MODULE
, чтобы указать на модель вашего профиля.
Как удачно заметил 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.
Попробуйте выполнить следующий шаг:
В файле 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 автоматически устанавливается для управления разрешениями)
Затем создайте новое приложение для своего приложения Django-Userena. В командной строке командной строки введите: python manage.py startapp accounts
. Мы создаем новое приложение для учетных записей "Django-Userena".
Теперь добавьте accounts
в ваш файл INSTALLED_APPS в файле settings.py.
Скопируйте следующее в 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)
Затем добавьте следующее в файл 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.
Добавьте в urls.py следующее: 'urlpatterns tuple:
(r'^accounts/', include('userena.urls')),
Настройте параметры электронной почты 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'
Перейдите в оболочку командной строки и введите:
python manage.py check_permissions
run/accounts/signin/