21 votes

Où se trouve un bon endroit pour travailler sur les comptes/profils dans Django avec l'application d'enregistrement de Django ?

J'ai remarqué qu'après m'être connecté avec l'enregistrement de Django, je suis redirigé vers le site suivant accounts/profile/ . Par défaut, l'enregistrement de Django url.py ne gère pas accounts/profile/ donc je dois créer le mien.

En fait, cette question est triple :

  1. Pourquoi après s'être connecté, il redirige vers accounts/profile/ ? Y a-t-il un moyen de changer cela ? De préférence, après avoir réussi à se connecter, je voudrais que Django redirige vers la page précédant la page de connexion.
  2. Si je devais créer ma propre vue et mon propre modèle pour accounts/profile/ alors où dois-je le mettre ? Le module intégré de Django users ( auth_user ) est partagé entre toutes les applications Django d'un projet. Je dois donc placer l'option view.py dans le dossier du projet et non dans le dossier de l'application ?
  3. Ou est-ce que Profil de Django s'occupe en fait de tout ça account/profiles/ chose ? J'ai déjà étendu la fonction User avec ma propre classe UserProfile mais il s'agit plutôt de champs additionnels à la base de données de l'UE. User Je n'ai pas créé d'avatars ni rien d'autre de ce genre, juste des éléments simples comme des adresses et des numéros de téléphone, mais surtout des types d'utilisateurs personnalisés dont dépend mon application.

15voto

jpic Points 17307

Pourquoi, après s'être connecté, le site redirige-t-il vers accounts/profile/ ? Existe-t-il un moyen de changer cela ? De préférence, après avoir réussi à se connecter, je voudrais que que Django redirige vers la page précédant la page de connexion.

Il suffit de changer les paramètres LOGIN_REDIRECT_URL

Si je devais créer ma propre vue et mon propre modèle pour accounts/profile/, où devrais-je les placer ? L'utilisateur intégré de Django (auth_user) est partagée entre toutes les applications Django d'un projet, je dois donc placer le fichier view.py dans le dossier du projet et non dans le dossier de l'application ?

J'aime créer une application appelée "project_specific" dans chaque projet. C'est là que je mets tout ce qui n'est pas censé être réutilisable et qui couple plusieurs applications.

Vous pouvez également créer un views.py au niveau du projet, mais c'est un peu compliqué par rapport à la création d'une application spécifique au projet.

En réalité, l'endroit où vous le mettez n'a pas d'importance.

Ou est-ce que le profil de Django compte/profils/ ? J'ai déjà étendu la classe User de Django avec avec mon propre UserProfile, mais il s'agit plus de champs supplémentaires à la table qu'un véritable "profil" (je n'ai pas créé d'avatars ni rien d'autre, juste de simples comme ça, juste des trucs simples comme des adresses et des numéros de téléphone, mais mais surtout, des types d'utilisateurs personnalisés dont dépend mon application).

Ce n'est pas la façon d'ajouter des champs supplémentaires pour les utilisateurs. Je vous recommande de lire la documentation sur Stocker des informations supplémentaires sur les utilisateurs .

10voto

Claude Houle Points 161

Pour une approche minimale qui ne nécessite pas d'application autonome,

  1. Créez un modèle et appelez-le profile.html ou tout ce que vous voulez.

     <p>This is your profile, {{ user.username }}.</p>
  2. En urls.py ajoutez un modèle d'url qui pointe vers votre modèle de profil, marquez-le login_required et donnez un nom à l'url :

     # ...
    
     from django.views.generic import TemplateView
     from django.contrib.auth.decorators import login_required
    
     urlpatterns = [
         # ...
         url(r'^accounts/profile/$', login_required(TemplateView.as_view(template_name='profile.html')), name='user_profile'),
         # ...
     ]
  3. En settings.py ajoutez la ligne suivante :

     LOGIN_REDIRECT_URL = 'user_profile'

Cette ligne indique à Django d'effectuer une recherche d'URL inverse par nom lors de la redirection d'un utilisateur après une connexion. Sans cette ligne, votre application fonctionnera toujours mais elle sera fragile car elle repose sur une URL arbitraire codée en dur qui est implicitement configurée par Django. Avec cette ligne, si vous ou quelqu'un d'autre décide que les profils des utilisateurs doivent être à l'adresse /me/ vous pouvez changer l'URL à l'étape 2 sans casser votre application.

2voto

ssbb Points 986
  1. Définir LOGIN_REDIRECT_URL dans les paramètres - https://docs.djangoproject.com/en/dev/ref/settings/#login-redirect-url
  2. Créer une application de compte, où se trouve le code pour cela.

Vous pouvez utiliser django userena pour un espace utilisateur complet : https://django-userena.readthedocs.org/en/latest/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X