Доступ к странице профиля для объекта пользователя в Django - PullRequest
0 голосов
/ 18 марта 2010

У меня есть требование, при котором я должен сначала регистрировать пользователей по электронной почте. Итак, я пошел с django-registraton и мне удалось интегрировать модуль tat в мой проект django. После успешного входа в систему страница перенаправляется на страницу «registration / profile.html». Мне нужно получить доступ к объекту пользователя, который использовался при аутентификации. Мне нужен этот объект для внесения изменений в модель, которая содержит информацию о пользовательских профилях моих пользователей. Я уже определил это в моем models.py

Вот URL, который я использую для перенаправления на мой шаблон. URL (г '^ профиль / $', direct_to_template, { 'шаблон': 'регистрация / profile.html'}),

Итак, мой вопрос заключается в следующем ... после входа в систему пользователь должен перейти на страницу профиля, которую необходимо заполнить. Есть мысли о том, как мне этого добиться?

1 Ответ

1 голос
/ 18 марта 2010

Я настроил нечто подобное ранее. В моем случае я определял новых пользователей через интерфейс администратора, но основная проблема была та же. Мне нужно было показать определенную страницу (т.е. пользовательские настройки) при первом входе в систему.

Я закончил тем, что добавил флаг (first_log_in, BooleanField) в модель UserProfile. Я установил проверку для этого в функции просмотра моей главной страницы, которая обрабатывает маршрутизацию. Вот грубая идея.

views.py:

def get_user_profile(request):
    # this creates user profile and attaches it to an user
    # if one is not found already
    try:
        user_profile = request.user.get_profile()
    except:
        user_profile = UserProfile(user=request.user)
        user_profile.save()

    return user_profile

# route from your urls.py to this view function! rename if needed
def frontpage(request):
    # just some auth stuff. it's probably nicer to handle this elsewhere
    # (use decorator or some other solution :) )
    if not request.user.is_authenticated():
        return HttpResponseRedirect('/login/')

    user_profile = get_user_profile(request)

    if user_profile.first_log_in:
        user_profile.first_log_in = False
        user_profile.save()

        return HttpResponseRedirect('/profile/')

    return HttpResponseRedirect('/frontpage'')

models.py:

from django.db import models

class UserProfile(models.Model):
    first_log_in = models.BooleanField(default=True, editable=False)
    ... # add the rest of your user settings here

Важно, чтобы вы установили AUTH_PROFILE_MODULE в своем файле setting.py, чтобы указать модель. Т.е..

AUTH_PROFILE_MODULE = 'your_app.UserProfile'

должно работать.

Взгляните на эту статью для получения дополнительной информации о UserProfile. Надеюсь, это поможет. :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...