2010-03-18 5 views
0

J'ai une exigence où je dois d'abord enregistrer les utilisateurs par e-mail. Donc, je suis allé avec django-registraton et j'ai réussi à intégrer tat module dans mon projet django. Après une connexion réussie, la page redirige vers 'registration/profile.html'. J'ai besoin d'accéder à l'objet utilisateur qui a été utilisé dans l'authentification. J'ai besoin de cet objet pour apporter des modifications à un modèle qui contient des informations de profil personnalisées sur mes utilisateurs. J'ai déjà défini ceci dans mes modèles.pyPage Profil accédant à l'objet utilisateur dans Django

Voici l'URL que j'utilise pour rediriger vers mon modèle .. url (r '^ profile/$', direct_to_template, {'template': 'enregistrement /profile.html '}),

Donc, ma question est la suivante ... après la connexion, l'utilisateur doit être redirigé vers une page de profil qui doit être remplie. Des idées sur comment je peux y parvenir?

Répondre

1

J'ai déjà configuré quelque chose de similaire. Dans mon cas, j'ai défini de nouveaux utilisateurs via l'interface d'administration, mais le problème de base était le même. J'avais besoin de montrer certaine page (c.-à-d. Les arrangements d'utilisateur) sur la première connexion.

J'ai fini par ajouter un drapeau (first_log_in, BooleanField) dans le modèle UserProfile. J'ai mis en place une vérification pour la fonction d'affichage de ma page d'accueil qui gère le routage. Voici l'idée brute.

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 

Il est important que vous définissez AUTH_PROFILE_MODULE à votre setting.py pour pointer vers le modèle. C'est à dire.

AUTH_PROFILE_MODULE = 'your_app.UserProfile' 

devrait fonctionner.

Jetez un oeil à this article pour plus de détails sur UserProfile. J'espère que ça aide. :)

+0

Donc, votre suggestion est d'ajouter ces méthodes au modèle personnalisé UserOption est-il? et apporter des modifications au paramètre d'action du formulaire pour appeler par exemple frontpage rgt? Suis un peu nouveau à django .. donc si vous pourriez élaborer .. sera utile .. – Sharath

+0

J'ai étendu la réponse un peu. J'espère que c'est plus clair maintenant. :) –

+0

oh désolé .. manqué le views.py rubrique ...: P Merci beaucoup .. vous avez été le plus utile .. – Sharath

Questions connexes