{"id":559,"date":"2010-04-10T18:44:54","date_gmt":"2010-04-10T16:44:54","guid":{"rendered":"http:\/\/j-mad.com\/blog\/?p=559"},"modified":"2010-04-10T18:46:20","modified_gmt":"2010-04-10T16:46:20","slug":"django-request-ne-partez-plus-en-quest-de-vos-stats","status":"publish","type":"post","link":"https:\/\/j-mad.com\/blog\/2010\/04\/10\/django-request-ne-partez-plus-en-quest-de-vos-stats\/","title":{"rendered":"Django-request , ne partez plus en quest de vos stats"},"content":{"rendered":"<p>Et non, vous ne r\u00eavez pas, on est m\u00eame pas le 15 avril et d\u00e9j\u00e0, d\u00e9j\u00e0, le billet de l&#8217;app django du mois est l\u00e0. Mais bon, les <a title=\"DjangoCong\" href=\"http:\/\/rencontres.django-fr.org\/\">rencontres django<\/a> ayant lieu dans maintenant 14 jours et n&#8217;ayant pas encore commencer \u00e0 pr\u00e9parer ma conf, m\u00eame pas le premier mot (enfin si, bonjour), ce qui fait que je suis &#8216;dans la banade&#8217;, comme l&#8217;a fait si justement remarquer il y a peu <a href=\"http:\/\/twitter.com\/daks_\">@daks_<\/a><\/p>\n<p>Donc, je pr\u00e9f\u00e8re me &#8216;d\u00e9barrasser&#8217; tout de suite de l&#8217;app du mois, comme \u00e7a, \u00e7a sera au moins une chose de faite.<\/p>\n<p>Ce mois-ci, je vais donc vous pr\u00e9senter django-request, une app pour faire des stats sur la fr\u00e9quentation de votre django. Oui je sais il y a google analytics pour \u00e7a. Mais bon, on sait jamais, \u00e7a peut \u00eatre utile quand m\u00eame.<\/p>\n<h1>1- O\u00f9 on le trouve, comment on l\u2019installe, tout \u00e7a quoi (et la doc) ?<\/h1>\n<p>On le trouve \u00e0 deux endroits :<\/p>\n<ul>\n<li>sur le <a href=\"http:\/\/github.com\/kylef\/django-request\">github<\/a> qui va bien<\/li>\n<li>sur les <a href=\"http:\/\/kylefuller.co.uk\/projects\/django-request\/\">pages d\u00e9di\u00e9es sur le site de son auteur<\/a>.<\/li>\n<\/ul>\n<p>A noter que quasiment toute la doc se trouve \u00eatre sur la partie d\u00e9di\u00e9e \u00e0 django-request sur le site de son auteur.<\/p>\n<p>Pour l&#8217;installation, facile, un git clone, un t\u00e9l\u00e9chargement de source ou alors pip et easy_install.<\/p>\n<p>Quand \u00e0 la doc, elle est vraiment tr\u00e8s fournie et compl\u00e8te, permettant d&#8217;installer, de configurer, d&#8217;utiliser, la totale quoi.<\/p>\n<h1>2- A quoi ca sert ?<\/h1>\n<p>Ben \u00e0 faire des stats, je l&#8217;ai d\u00e9j\u00e0 dit. Qui ne seront visibles que dans la partie admin.<\/p>\n<p>On peut avoir de jolis graphiques concernant :<\/p>\n<ul>\n<li>les visiteurs uniques<\/li>\n<li>les visites bas\u00e9es sur des referrer diff\u00e9rents<\/li>\n<li>les requ\u00eates re\u00e7ues par le serveur<\/li>\n<li>les requ\u00eates venant des moteur de recherches<\/li>\n<li>les requ\u00eates provenant du javascript<\/li>\n<li>les requ\u00eates en SSL<\/li>\n<li>les requ\u00eates faites par un utilisateur<\/li>\n<li>le nombre d&#8217;erreur 404<\/li>\n<li>le nombre d&#8217;erreur, toutes erreurs comprises<\/li>\n<li>le nombre d&#8217;utilisateur enregistr\u00e9 sur le site qui ont fait des requ\u00eates<\/li>\n<\/ul>\n<p>Par d\u00e9faut les calculs seront fait pour les visiteurs uniques, les visites en fonctions des referrers et le nombre global de requ\u00eates.<\/p>\n<p>On obtient ensuite un joli petit graphique qui nous donne tout plein d&#8217;infos. Et plein de petits tableaux pour en avoir encore plus.<\/p>\n<p><a href=\"http:\/\/j-mad.com\/blog\/wp-content\/uploads\/2010\/04\/graph_django_requests.png\" rel=\"lightbox[559]\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-560\" title=\"graph_django_requests\" src=\"http:\/\/j-mad.com\/blog\/wp-content\/uploads\/2010\/04\/graph_django_requests.png\" alt=\"\" width=\"480\" height=\"272\" srcset=\"https:\/\/j-mad.com\/blog\/wp-content\/uploads\/2010\/04\/graph_django_requests.png 480w, https:\/\/j-mad.com\/blog\/wp-content\/uploads\/2010\/04\/graph_django_requests-300x170.png 300w\" sizes=\"auto, (max-width: 480px) 100vw, 480px\" \/><\/a><\/p>\n<p>Et on peut m\u00eame avoir, des petits templates tags pour voir les users actifs sur le site<\/p>\n<h1>3- Comment \u00e7a marche ?<\/h1>\n<p>Il suffit d&#8217;ajouter &#8216;request&#8217; dans ses installed_apps et d&#8217;ajouter le middleware qui va bien. (Attention suivant les middlewares d\u00e9j\u00e0 install\u00e9s, la position du middleware de django-request, dans le tuple des middleware est importantt, mais c&#8217;est bien expliqu\u00e9 dans la doc).<\/p>\n<p>Ensuite, tout ce passe dans l&#8217;interface d&#8217;admin<\/p>\n<h1>4- Tips de chez Jmad.<\/h1>\n<p>Quand j&#8217;ai install\u00e9 le tout avec easy_install, j&#8217;ai oubli\u00e9 de rajouter les chemins pour avoir les templates admins de l&#8217;app. R\u00e9sultat je n&#8217;avais rien dans l&#8217;admin. Faites y attention ou alors installez request directement dans votre projet django, comme une de vos apps.<\/p>\n<p>Le model Request pr\u00e9sente un champ language qui est mod\u00e9lis\u00e9 en bd par un varchar de 25. Avec mes tests, cette longueur \u00e9tait bien trop petite pour mon firefox. Du coup boum une erreur BD a base de &#8216;machin qui a \u00e9t\u00e9 truncated&#8217;. J&#8217;ai pass\u00e9 la taille du champ \u00e0 200 pour \u00eatre tranquille.<\/p>\n<p>Les diff\u00e9rents fichiers js qui sont utilis\u00e9s sont bien entendu fournis. Pourtant par d\u00e9faut, les templates vont utilis\u00e9s ceux host\u00e9s ailleurs (sur le site web de l&#8217;auteur par exemple). N&#8217;oubliez pas de changer cette option si cela vous d\u00e9range.<\/p>\n<p>C&#8217;est expliqu\u00e9 dans la doc, mais je le redis ici. Une fois que tout est bien configur\u00e9, pour aller voir ces stats, vous allez dans l&#8217;admin, vous cliquez sur la ligne Request de l&#8217;app Request. L\u00e0 vous avez la liste de toutes les requ\u00eates. (pas tr\u00e8s utile l\u00e0 comme \u00e7a, vous me direz). Levez les yeux, en haut \u00e0 droie, \u00e0 cot\u00e9 du bouton Add Request, vous avez un bouton Overview. Et voil\u00e0, cliquez, vous avez vos stats.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Et non, vous ne r\u00eavez pas, on est m\u00eame pas le 15 avril et d\u00e9j\u00e0, d\u00e9j\u00e0, le billet de l&#8217;app django du mois est l\u00e0. Mais bon, les rencontres django ayant lieu dans maintenant 14 jours et n&#8217;ayant pas encore commencer \u00e0 pr\u00e9parer ma conf, m\u00eame pas le premier mot (enfin si, bonjour), ce qui &hellip; <a href=\"https:\/\/j-mad.com\/blog\/2010\/04\/10\/django-request-ne-partez-plus-en-quest-de-vos-stats\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Django-request , ne partez plus en quest de vos stats<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[35],"tags":[99,98],"class_list":["post-559","post","type-post","status-publish","format-standard","hentry","category-la-django-app-du-mois","tag-django","tag-python"],"aioseo_notices":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p12cdp-91","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/posts\/559","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/comments?post=559"}],"version-history":[{"count":3,"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/posts\/559\/revisions"}],"predecessor-version":[{"id":562,"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/posts\/559\/revisions\/562"}],"wp:attachment":[{"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/media?parent=559"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/categories?post=559"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/tags?post=559"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}