Feb 082025
 

Le CSRF , mais pourquoi faire ?

Imaginons, juste comme ça hypothétiquement, que vous vouliez désactiver de manière globale la protection CSRF sur la totalité des urls d’un site django.

Vous pensez qu’il suffit de désactiver le middleware qui va bien (soit django.middleware.csrf.CsrfViewMiddleware ) pour que op c’est bon, la vérification CSRF n’est plus mise en place ?

Vous serez alors décontenancé de voir que non, cela ne suffit pas. Il faut aussi ajouter le décorateur csrf_exempt ( qui se trouve dans django.views.decorators.csrf ) sur chacune de vos urls. Un peu compliqué en vrai, surtout si vous avez beaucoup d’urls. _

Comment faire ?

Tout simplement coder un middleware qui va l’enlever pour vous. Vous n’aurez ensuite qu’à le déclarer dans les middleware actifs.


class NOCSRFMiddleware(object):
def __init__(self, get_response):
        self.get_response = get_response

    def __call__(self, request):
        setattr(request, '_dont_enforce_csrf_checks', True)
        response = self.get_response(request)
        return response

Et voila ! Il suffit ensuite de le déclarer dans MIDDLEWARE et le tour est joué ( par exemple avec un  BadIdeaApp.BadMiddleware.NOCSRFMiddleware

Groupons, Groupons, Groupons !!!

J’avais totalement oublié l’existence du templatetags regroup qui permet de regrouper des objets identique par un attribut commun. Comme regrouper une liste de dictionnaires par les valeurs de l’un des attributs. La documentation complète est disponible ici : https://docs.djangoproject.com/en/4.2/ref/templates/builtins/#regroup

Et redécouvrir ce templatetags m’a été bien utile. Surtout en le couplant avec un autre templatetags que j’avais également oublié, dicsort ( https://docs.djangoproject.com/fr/4.2/ref/templates/builtins/#std-templatefilter-dictsort) qui va trier une liste de dictionnaire par une des clés des dictionnaires.

 Posted by at 00:41
Jan 052025
 

Je me suis retrouvé il y a quelques temps avec une problématique, remplacer une chaine par une autre dans un attribut CharField d’un model django.

La première possibilité était de faire tout simplement une belle boucle sur la totalité de mes instances de module, faire le remplacement en python et sauvegarder la nouvelle valeur.


Sauf que j’avais quasiment un million d’objet et que je n’avais pas envie que cela prenne des plombes. Et puis c’était un peu moche.

Du coup j’ai un peu fouillé et miracle, j’ai trouvé une solution que voici.

On commence par définir la fonction de remplacement, tout en django et en SQL.


from django.db.models import F, Func, Value
def replace_func(field_name, old_str, replace_str):
    return Func(
        F(field_name),
        Value(old_str), Value(replace_str),
        function='replace'
    )

Ensuite, il n’y a quasiment plus rien à faire. On va simplement appeler update sur tout les objets et utiliser replace_func.

Par exemple :


MonModele.objects.filter(CONDITIONS).update(
    champ_a_modifier=replace_func("champ_a_modifier",
                                  "str_que_lon_veut_remplacer",
                                  "nouvelle_chaine_de_caractere")

Et voila, c’est fini.

 Posted by at 00:55

Bilan 2024

Les années passent et mes introductions de bilans annuels se ressemblent. Pour le bilan 2022, je disais que 2022 avait été une année dure. Pour le bilan 2023, alors que j’espérais une année 2023 plus agréable je démarrais en disant que 2023 a été une des années les plus difficiles à traverser. Et pour 2024 […]

Nature Humaine le Tome 2 de Poison Ivy Infinite

Auteur : G WILLOW WILSON
Dessin : Majoritairement Marcio TAKARA mais pas que

 📖 Présentation / Résumé : Attention spoiler du tome 1 !! Ivy a donc triomphé de son créateur / Némésis. Elle a également abandonné son idée de détruire l’humanité pour se concentrer sur détruire les pollueurs. Quand à Harley, elle prenait la route […]

Multi top 3 de 2023

Je l’ai dit comme une boutade en intro du billet du bilan mensuel décembre 2023, je devrais écrire un billet multi top 3. Alors pourquoi pas l’écrire. Après tout c’est rigolo. Simplement je vais faire des top 3 non classés. Parce que je n’arriverais vraiment pas à classer entre eux mes items de top, ça […]

Bilan 2023

Pour mon bilan 2022, écrit en mars 2023, je disais que 2022 avait été une année éprouvante, épuisante, une année que j’étais heureux de pouvoir laisser derrière moi et d’oublier. Mais que 2023 avait l’air de mieux démarrer. Je pense qu’il aurait été difficile de plus se tromper. Plein de raisons on fait que 2023 […]

Clovd T1 : La dame de Birka

Auteur : Florent MaudouxDessin : Florent Maudoux 📖 Présentation / Résumé : Le Clovd a recouvert le monde. Brouillard maléfique remplit de monstre il a renvoyé l’humanité dans un Moyen-Age qui rêve des technologies de l’avant Clovd. Funérailles est un immortel. Il parcours le monde, survivant envers et contre tout. Il croise le chemin d’Isatis […]

Les trucs de novembre 2023

Novembre, bah j’ai rien à dire en chapeau de billets sur le mois de décembre. Des jours fériés un peu, du taff beaucoup et le début de la préparation pour Noël ! Les trucs que j’ai lus. Et tout d’abord le tome 4 de Blame, je m’approche de la fin, j’ai pour l’instant beaucoup plus de […]

Les trucs d’octobre 2023

Halloween est là. Les vacances de la Toussaint pour les enfants et les salons pro parisiens pour moi. J’aime bien le mois d’octobre, l’ambiance automne et fantôme, le froid qui arrive, les jours qui raccourcissent. Les trucs que j’ai lus. Comme le mois dernier, beaucoup de Bitlit pour octobre. Même chose que le moid dernier, […]

Les trucs de septembre 2023

C’est bien fini les vacances. Septembre arrive, retour à l’école, retour au boulot. Mais d’un autre côté les températures deviennent enfin un peu acceptables. Le dernier sprint vers la fin de l’année commence… La reprise des déplacements et des passage dans les TGV pour moi. Les trucs que j’ai lus. Beaucoup de Bitlit ce mois-ci […]