Где хорошее место для работы с учетными записями / профилем в Django с помощью приложения регистрации Django? - PullRequest
19 голосов
/ 23 марта 2012

Я заметил, что после входа в систему с регистрацией в Django он перенаправляет меня на accounts/profile/.По умолчанию регистрация Django url.py не обрабатывает accounts/profile/, поэтому мне нужно создать свою собственную.

На самом деле этот вопрос состоит из трех частей:

  1. Почему после регистрациив, он перенаправляет на accounts/profile/?Есть ли способ изменить это?Предпочтительно после успешного входа в систему я бы хотел, чтобы Django перенаправил обратно на страницу перед страницей входа в систему.
  2. Если бы мне нужно было создать собственный вид и шаблон для accounts/profile/, то где мне его поместить?Встроенный в Django users (auth_user) используется всеми приложениями Django внутри проекта, поэтому я должен поместить view.py в папку проекта, а не в папку приложения?
  3. Или Профиль Django на самом деле заботится обо всей этой вещи account/profiles/?Я уже расширил класс User в Django своим собственным UserProfile, но это больше похоже на дополнительные поля в таблице User, чем на настоящий "профиль" (я не создавал аватары или что-то в этом роде, просто такие вещи, как адресаи номера телефонов, но самое главное, некоторые пользовательские типы, от которых зависит мое приложение).

Ответы [ 3 ]

14 голосов
/ 23 марта 2012

Почему после входа в систему он перенаправляет в аккаунты / профиль /? Есть способ изменить это? Желательно после успешного входа в систему я бы например, Django перенаправить обратно на страницу перед страницей входа.

Просто измените настройку LOGIN_REDIRECT_URL

Если бы я создал свой собственный вид и шаблон для аккаунтов / профиля /, тогда где мне его поставить? Встроенные пользователи Django (auth_user) общий для всех приложений Django внутри проекта, поэтому я должен разместить view.py в папке проекта, а не в папке приложения?

Мне нравится создавать приложение под названием "project_specific" в каждом проекте. Вот куда я положил все вещи, которые не предназначены для повторного использования и которые объединяют многие приложения.

Вы также можете создать views.py на уровне проекта, но это немного грязно по сравнению с созданием приложения для проекта.

На самом деле не имеет значения, куда вы его положили.

Или профиль Django действительно заботится обо всем этом аккаунт / профили / вещь? Я уже расширил класс User в Django мой собственный UserProfile, но это больше похоже на дополнительные поля для пользователя таблица, чем фактический "профиль" (я не создавал аватары или что-нибудь вот так, просто такие вещи, как адреса и номера телефонов, но самое главное, некоторые пользовательские типы пользователей, от которых зависит мое приложение).

Это не способ добавить дополнительные пользовательские поля. Я рекомендую вам прочитать документы на Хранение дополнительной информации о пользователях .

6 голосов
/ 09 мая 2016

Для минимального подхода, который не требует отдельного приложения,

  1. Создайте шаблон и назовите его profile.html или как хотите.

    <p>This is your profile, {{ user.username }}.</p>
    
  2. В urls.py добавьте шаблон URL, который указывает на шаблон вашего профиля, отметьте его login_required и присвойте URL имя:

    # ...
    
    from django.views.generic import TemplateView
    from django.contrib.auth.decorators import login_required
    
    urlpatterns = [
        # ...
        url(r'^accounts/profile/$', TemplateView.as_view(template_name='profile.html'), name='user_profile'),
        # ...
    ]
    
  3. В settings.py добавьте следующую строку:

    LOGIN_REDIRECT_URL = 'user_profile'
    

Эта строка говорит Django выполнить обратный поиск URL по имени при перенаправлении пользователя после входа в систему.Без этой строки ваше приложение будет по-прежнему работать, но оно будет хрупким, поскольку оно опирается на произвольно жестко заданный URL-адрес, который неявно настраивается Django.С этой строкой, если вы или кто-то еще решите, что профили пользователей должны иметь значение /me/, вы можете изменить URL-адрес на шаге 2, не нарушая приложение.

2 голосов
/ 23 марта 2012
  1. Установите LOGIN_REDIRECT_URL в настройках - https://docs.djangoproject.com/en/dev/ref/settings/#login-redirect-url
  2. Создайте приложение для учетной записи, где содержится код для этого.

Вы можете использовать django userena для полной области пользователя: https://django -userena.readthedocs.org / ru / latest /

...