La modification de l' django_session
tableau pour ajouter une explicite user_id
peut rendre la vie beaucoup plus facile. En supposant que vous faire (ou quelque chose de similaire), voici quatre approches pour munging les choses à votre goût:
Fourche de l' djago.contrib.session
code. Je sais, je sais, c'est une chose horrible à penser. Mais c'est seulement de 500 lignes, y compris tous les backends et moins les tests. C'est assez simple à pirater. C'est le meilleur itinéraire que si vous allez faire un peu de sérieux réaménagement des choses.
Si vous ne voulez pas à la fourchette, vous pouvez essayer de vous connecter à l' Session.post_save
de signal et munge là.
Ou vous pourriez MonkeyPatch contrib.session.models.Session.save()
. Juste envelopper la méthode existante (ou en créer un nouveau), ateliers/synthétiser quelles que soient les valeurs que vous avez besoin, de les stocker dans votre nouveau champs, puis super(Session, self).save()
.
Encore une autre façon de le faire est de mettre dans les 2 (oui, deux) middleware les classes -- un avant et un après SessionMiddleware
dans votre settings.py fichier. C'est à cause de la façon dont le middleware est traitée. L'un de ceux énumérés après SessionMiddleware
obtiendrez, sur la requête entrante, une demande auprès de la session déjà attaché à elle. Une cité avant de faire une quelconque traitement de la réponse et/ou de modifier la/ré-enregistrer la session.
Nous avons utilisé une variante de cette dernière technique pour créer des pseudo-des séances pour les spiders des moteurs de recherche afin de leur donner un accès spécial à la matière qui est normalement réservées aux membres. Nous avons également de détecter des liens entrants, où l' REFERER
champ est de l'associated moteur de recherche, et de nous donner à l'utilisateur un accès complet à un article.