2010-03-18 2 views
0

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

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

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

ответ

1

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

В итоге я добавил флаг (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' 

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

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

+0

Так что предложение ur заключается в том, чтобы добавить эти методы в пользовательскую модель UserOption? и внести изменения в параметр действия формы, чтобы вызвать, например, frontpage rgt? Немного новичок в django .. так что, если вы могли бы разработать .. будет полезно .. – Sharath

+0

Я немного расширил ответ. Надеюсь, теперь это станет более ясным. :) –

+0

oh sorry .. пропустил view.py заголовок ...: P Спасибо большое .. вы были наиболее полезны .. – Sharath

 Смежные вопросы

  • Нет связанных вопросов^_^