Comments on: Explication de code: des mixins et des décorateurs de méthode pour Django http://sametmax.com/explication-de-code-des-mixins-et-des-decorateurs-de-methode-pour-django/ Du code, du cul Sat, 07 Nov 2015 11:08:18 +0000 hourly 1 http://wordpress.org/?v=4.1 By: rakweine http://sametmax.com/explication-de-code-des-mixins-et-des-decorateurs-de-methode-pour-django/#comment-160430 Thu, 07 May 2015 16:01:40 +0000 http://sametmax.com/?p=1812#comment-160430 Et oui je souhaite faire un filtre plus tard, et oui je vais me servir au moment là de la query_set method unique pour le filtre

l’avantage c’est que j’aurai beaucoup moins de traitement conditionnels à faire vue que les variables auront déjà été trité dans ma dispatch. Mon code sera alors plus facile à maintenir.

]]>
By: rakweine http://sametmax.com/explication-de-code-des-mixins-et-des-decorateurs-de-methode-pour-django/#comment-160429 Thu, 07 May 2015 15:55:00 +0000 http://sametmax.com/?p=1812#comment-160429 Bah! résolu !

j’ai pu constaté que la dispatch method est fournie avec une batterie de variables interressantes et j’ai compris le rôle de la super method !(desolé j’ai tendance à utiliser le plus souvent l’anglais ne m’en voule pas trop)

donc c’est un souci resolu:

et pour ce que sa interresse voici ma façon de procéder:

problème: soit un formulaire de recherche d’articles en get method (<form… method=”GET”>…), le dis formulaire est autocomplete(grace à js + ajax) afin de faciliter la recherche d’un article. sauf que l’user(utilisateur malveillant ou autre..) peut indiquer un nom absent dans la bdd ou la jumping list qui apparaît

je souhaitais à partir de cet exemple aleatoirement choisi savoir comment gérer ce genre de cas et j’ai choisi d’utliser une liste view pour l’affichage du resultat et la dispatch method pour le traitement des données transmises.

class MaVue(ListView):

def dispatch(self, request, *args, **kwargs):

try:

get_elt_search = MonModel.objects.get(article_name=search_article)

except MonModel.DoesNotExist:

self.kwargs.update(csrf(self.request)

self.kwargs['nom_erreur']= erreur

return template_to_response(self.template_name, kwargs)

super(MaVue, self).dispatch(request, *args, **kwargs)

----- reste du code de la vue ------

Bon c’est tout et ça fonctionne correctement.

]]>
By: Sam http://sametmax.com/explication-de-code-des-mixins-et-des-decorateurs-de-methode-pour-django/#comment-160428 Thu, 07 May 2015 15:51:51 +0000 http://sametmax.com/?p=1812#comment-160428 Si tu veux filtrer ton queryset, fait le en overridant get_queryset(). Tu n’as pas besoin de toucher à dispatch()

]]>
By: rakweine http://sametmax.com/explication-de-code-des-mixins-et-des-decorateurs-de-methode-pour-django/#comment-160419 Thu, 07 May 2015 10:37:33 +0000 http://sametmax.com/?p=1812#comment-160419 Je repose ma question vue que tu ne l’as pas vu:

comment je pourrais transmettre des paramètres aux autres méthodes de ma CBV (eg: MaVue(ListView)) lorsque je modifie la methode dispatch ?

un exemple vaudrais mieux alors voici un très simple pris comme ça…:

disons que j’ai un formulaire de recherche d’articles ou autres, ce formulaire utilise la Get method, bien ! lorsque les donnés sont transmises je souhaite appellé la methode dispatch afin de limiter la recherche aux articles susceptibles d’exister dans ma bdd (dans les cas d’un formulaire avec des autocompletions ou autres…).

Alors moi j’aimerais savoir comment je pourrais transmettre les paramètres analysé aux autres methode de la même vue.

code:

 
class MaVue(ListView):
 
def dispatch(self, request, *args, **kwargs):
 
je recupere les donnees transmise via get
 
seach_article = self.request.GET.get("elt") &lt;---- données recherché par un eventuels user
 
try:
 
get_elt_search = MonModel.objects.get(article_name=search_article)
 
except MonModel.DoesNotExist:
 
je retourne une render_to_response ou autre
 
---- et c'est ici que je bloque j'aimerais savoir comment je pourrais transmettre ma get_elt_search à ma super method comme explique dans le tutos.

pourquoi: parce que bah je souhaite reutiliser cette get_elt_search dans ma queryset method histoire de customiser un peu plus ma requête .

Voilà j’espère que vous m’avez compris et que vous me repondrai aussi vite.

]]>
By: Sam http://sametmax.com/explication-de-code-des-mixins-et-des-decorateurs-de-methode-pour-django/#comment-160417 Thu, 07 May 2015 08:55:49 +0000 http://sametmax.com/?p=1812#comment-160417 Le MRO d’une classe en Python est disponible dans l’attribut __mro__ :

>>> from collection import defaultdict
>>> defaultdict.__mro__
(collections.defaultdict, dict, object)

Pour le schéma, on verra quand j’aurais le temps de pondre ça.

]]>
By: rakweine http://sametmax.com/explication-de-code-des-mixins-et-des-decorateurs-de-methode-pour-django/#comment-160412 Thu, 07 May 2015 07:36:32 +0000 http://sametmax.com/?p=1812#comment-160412 Désolé de ne pas rafraichir la page tout le temps donc:

Oui,

Je souhaite avoir le mro de certaines classe en particulier les voici:

ListView, DetailView, Formview, createView, UpdateView.

et si possible indiquez les elements retournés par chacune des methode de la vue.

]]>
By: rakweine http://sametmax.com/explication-de-code-des-mixins-et-des-decorateurs-de-methode-pour-django/#comment-160410 Thu, 07 May 2015 07:29:25 +0000 http://sametmax.com/?p=1812#comment-160410 Une derniere question est ce qu’il serait possible dans le schema que vous ferez d’indiquer les eletments que les methodes que vous choisirez retournent ?

comment je pourrais transmettre des paramètres aux autres méthodes de ma CBV (eg: MaVue(ListView)) lorsque je modifie la methode dispatch ?

un exemple vaudrais mieux alors voici un très simple pris comme ça…:

disons que j’ai un formulaire de recherche d’articles ou autres, ce formulaire utilise la Get method, bien ! lorsque les donnés sont transmises je souhaite appellé la methode dispatch afin de limiter la recherche aux articles susceptibles d’exister dans ma bdd (dans les cas d’un formulaire avec des autocompletions ou autres…).

Alors moi j’aimerais savoir comment je pourrais transmettre les paramètres analysé aux autres methode de la même vue

code:

 
class MaVue(ListView):
 
def dispatch(self, request, *args, **kwargs):
 
#je recupere les donnees transmise via get
 
seach_article = self.request.GET.get("elt") &lt;---- données recherché par un eventuels user
 
try:
 
get_elt_search = MonModel.objects.get(article_name=search_article)
 
except MonModel.DoesNotExist:
 
#je retourne une render_to_response ou autre
 
#---- et c'est ici que je bloque j'aimerais savoir comment je pourrais transmettre ma get_elt_search à ma super method comme explique dans le tutos.

pourquoi: parce que bah je souhaite reutiliser cette get_elt_search dans ma queryset method histoire de customiser un peu plus ma requête .

Voilà j’espère que vous m’avez compris et que vous me repondrai aussi vite.

]]>
By: Sam http://sametmax.com/explication-de-code-des-mixins-et-des-decorateurs-de-methode-pour-django/#comment-160408 Thu, 07 May 2015 07:23:49 +0000 http://sametmax.com/?p=1812#comment-160408 Tu veux explication sur le MRO en Python en général, ou voir le MRO de certaines classes en particulier ?

]]>
By: rakweine http://sametmax.com/explication-de-code-des-mixins-et-des-decorateurs-de-methode-pour-django/#comment-160403 Thu, 07 May 2015 05:54:25 +0000 http://sametmax.com/?p=1812#comment-160403 d’accord !

mais s’il vous plait plutôt que d’attendre (je propose même que vous preniez votre temps afin que cela ressemble au tuto actuel)

je suis habituer à me servir des documentations bien expliquées, jai néanmoins trouvé ceci ccbv sa ressemble beaucoup à Qt (C++) dans la fàçon dont les classe sont hierarchisées, il y’a aussi l’api des CBV que j’ai trouvé dans le site de django, Ce que je veux maintenant c’est ce fameux MRO bien expliqué si jamais il y’a un article qui puisse aussi bien que vous expliquez celà dans un schema je prend.

]]>
By: Sam http://sametmax.com/explication-de-code-des-mixins-et-des-decorateurs-de-methode-pour-django/#comment-160394 Wed, 06 May 2015 22:39:28 +0000 http://sametmax.com/?p=1812#comment-160394 Faudrait faire un schéma de l’odre des appels des méthodes. Je vais voir si je peux faire ça.

]]>