Bienvenue sur IndexError.

Ici vous pouvez poser des questions sur Python et le Framework Django.

Mais aussi sur les technos front comme React, Angular, Typescript et Javascript en général.

Consultez la FAQ pour améliorer vos chances d'avoir des réponses à vos questions.

Debutant django

0 votes

Je commence à apprendre Django et je voudrais faire une petite application : gestion de clients, chaque client à son espace, il doit se connecter et peut modifier son profil. J ai essayé d utiliser administration de Django par défaut mais ce n'est pas ça puisqu il donne accès au profil de tous les clients.
Si vous pouvez me donner des conseils, idée, exemple...

demandé 30-Mai-2016 par anonyme
edité 31-Mai-2016 par max

Oui. Mais ce n'est pas un forum. Edite ton texte et pose la question directement.

4 Réponses

0 votes

Plusieurs piste :
- L'objet request est passé dans l'interface d'admin, tu peux filtrer l'affichage avec lui
- Créer des pages "publiques" avec des forms pour mettre à jour le profil
- N'oublie pas de créer le profil à la création du compte en enregistrant un "receiver" au signal "post_save" de User

... globalement, c'est pas simple... Y a pas qq'un qui a déja codé le truc ? regarde bien les applications existantes !

répondu 2-Jun-2016 par frague (662 points)

merci pour votre réponse, je veux des liens github si existe pour quelque chose de semblable

0 votes

Crées une class qui hérite de ModelAdmin, et utilises la quand tu enregistres ton model. Dans cette classe tu peux alors définir les methodes hasaddpermission, haschangepermission et hasdeletepermission qui te permmettend de contrôler qui peut faire quoi:

https://docs.djangoproject.com/fr/1.9/ref/contrib/admin/#django.contrib.admin.ModelAdmin.has_add_permission

Petit exemple:

from django.contrib import admin
from monapp import ProfileClient

class ProfilClientAdmin(admin.ModelAdmin):
    def has_change_permission(self, request, obj=None):
        # Le superuser doit toujours avoir accès à tout
        if request.user.is_superuser:
            return True
        # Seul le client peut modifier son profil 
        elif obj is not None:
            return request.user == obj.user
        else:
            return True
admin.site.register(ProfilClient, ProfilClientAdmin)
répondu 7-Jun-2016 par benjamin (394 points)

Bonsoir,
Merci pour la réponse, je vais faire des tests.
Merci encore

+1 vote

Le site d'administration n'est pas fait pour ça.
Il est destiné aux administrateurs du site pas aux utilisateurs.

répondu 12-Jun-2016 par anonyme

Oui c'est ce que j'ai remarqué en faisant des tests !

0 votes

L'Admin Django n'est pas adapté pour cela. Il te faut créer des pages web à la main.

répondu 23-Jun-2016 par Sam (4,984 points)
...