Bonjour,
Je suis à mon 3eme jour d'apprentissage de django. Jusque là ca va.
Je pensais qu'on pouvait remplacer l'utilisation de javascript par du code 100% django mais visiblement ce n'est pas le cas. Donc si je veux faire un site joli qui n'ouvre pas pleins de pages html, je vais devoir utiliser javascript apparemment…
Du coup vu que django utilise des templates, je me demandais s'il n'existait pas des sites "pré-définis" que je pourrais réutiliser? Par exemple un peu comme wix propose en ligne pour faire des blogs mais utilisables dans django en personnalisant ensuite le contenu.
Je n'ai pas trouvé grand chose sur internet à part des dashboard pour améliorer la gestion de l'admin du site et deux trois exemples (appseed) de sites complets.
La communauté django n'a pas produit des sites ressources "tout prêts" qu'on pourrait utiliser comme des librairies python?
# Éléments de réponse
Posté par GuieA_7 (site web personnel) . Évalué à 2.
Non django n'impose heureusement pas l'utilisation d'un framework JS ; mais libre à toi de choisir celui que tu veux (React, Vue.js …) si tu veux faire une One Page Application (c'est ce que je comprends de "qui n'ouvre pas pleins de pages html" mais ce n'est pas super clair). Bien que beaucoup de projets ne semblent pas très actifs, il y a pas mal de réponses sur PyPI pour la recherche "django react": https://pypi.org/search/?q=django+react
Ce que tu cherches à faire n'est pas très clair de manière générale ; si tu veux un Wix-like libre clé en main, cherche un Wix-like libre ; il en existe peut-être, peut-être même qui utilisent entre autres django (j'ai des doutes mais bon). Et s'il n'en existe pas, libre à toi d'en coder un (avec django ou autre). Mais se lancer dans django (qui est juste un framework, il faut coder derrière) et s'attendre à avoir un équivalent à facebook/twitter/instagram/wix clé en main juste en installant une app django, c'est probablement faire fausse route.
En espérant avoir éclairé quelques points.
# simplifier le codage
Posté par kr1p . Évalué à 1.
Oui ce n'est pas tres clair. En fait je cherche un truc qui me simplifie le codage de mon site. Donc si possible quelquechose un peu comme wordpress mais que je coderais et sur lequel j'aurais plus de controle grace à django.
D'apres mes recherches approfondies, il faut regarder du coté des cms pour django (wagtail, djangocms, mezzanine) et il y a quelques themes disponibles mais assez peu : jai trouvé un seul depot github de themes pour chaque cms…
dispo ici :
https://github.com/thecodinghouse/mezzanine-themes
https://github.com/moorinl/wagtail-themes
https://github.com/MegaMark16/django-cms-themes
[^] # Re: simplifier le codage
Posté par Pol' uX (site web personnel) . Évalué à 2.
Wagtail c'est fait pour des sites « cousus main ». Ça reste un environnement de développement plus qu'un CMS clé en main. Les raisons en sont discutées ici : https://docs.wagtail.org/en/stable/getting_started/the_zen_of_wagtail.html
En un mot, le cadriciel intègre l'essentiel qui permet à peu de frais de partir sur ce que tu veux, mais certainement pas un thème clé en main, qui, par nature, est à définir à 98% en fonction de chaque projet. En comparaison de Wordpress, certes tu dois tout faire (ce qui n'est pas toujours un handicap) et tout penser (ce qui est quand même plus complexe), mais avec un contexte technique qui est tellement plus agréable (MVT, python) et tellement plus facile à étendre…
J'imagine que dans le cas de django-cms ou mezzanine la situation est similaire.
Sur un autre sujet, et en lien avec la question initiale, il faut noter qu'il existe Unicorn qui se frotte à la question de l'intégration d'un composant js actif, sans code js explicite.
Adhérer à l'April, ça vous tente ?
[^] # Re: simplifier le codage
Posté par kr1p . Évalué à 1.
J'ai regardé vite fait unicorn mais dans les exemples, il n'y a que :
Todo
Count characters
Search
Click counter
Validation
Select
Sais tu si on peut faire d'autres trucs comme des petites fenetres (de login par exemple) ou des modifications de mise en page en scrollant?
# Django templates rocks
Posté par François GUÉRIN (Mastodon) . Évalué à 3.
Salut,
J'utilise Django depuis quelques années (8 ?) sur plein de projets, souvent de type 'CRUD+'. J'ai une base de templates que je réutilise de projets en projets, que je réadapte au besoin, à base de de bootstrap 4, et çà fait bien la taff… Je ne travaille pas pour des clients, mais pour une collectivité, çà simplifie le design…
L'un des grands intérêts des templates django, c'est de pouvoir réutiliser des parties de templates -
{% extends "base.html" %}
- et de pouvoir aussi inclure des morceaux -{% include "piece_of_code.html" %}
… Ah, et lesfilters
/templatetags
sont super cool aussi !Pour les interaction "Ajax", j'utilise Vue.js qui permet de créer des composants intégrables simplement dans les templates django, et j'utilise django rest framework (DRF) côté backend. Les composants permettent de faire des actions sur la DB sans recharger toute la page.
Çà marche bien aussi !
J'ai aussi un site en Wagtail (l'intranet de ma boîte), avec 30000 pages dedans, çà fait le taff. On vient de recruter une nouvelle webmaster pour ce site, 2 jours de formation lazy et c'est bon, elle est autonome. Le gros avantage de wagtail, c'est son interface d'administration super facile à utiliser pour les non-informaticiens—quasi 0 questions une fois qu'ils ont compris comment faire une recherche !
Côté front, j'use et j'abuse du cache, des index dans la base de donnée, le site est très rapide !
J'utilise Celery pour tout un tas de tâches qui prennent du temps, pour les cron…
J'ai fait un SPA basé sur django, avec VueJS + DRF aussi !
Bref, les SPA c'était à la mode, enfin un peu moins maintenant, mais on peut faire plein de trucs avec "plein de pages HTML" aussi !
Bon, par contre, je fais çà depuis 8 ans à peu près !
Courage !
[^] # Re: Django templates rocks
Posté par François GUÉRIN (Mastodon) . Évalué à 3.
En complément :
Ce qui est important dans mon expérience, c'est que django ne va pas pour tous les projets. Il a un domaine où il "brille" : les base de données un peu complexe, toutes les applications pré-existantes qu'on peu installer dans son projet, mais qui rajoutent des dépendance - on a intérêt à être sûr du projet, pour ne pas se retrouver avec une dépendance non maintenue 2 ans plus tard…
Par contre, côté front en JS, c'est vraiment la plaie !
3000 paquets dans le dossier
node_packages
, des dépendances qui tombent comme des mouches, le maintenance est à la fois difficile et chronophage…Pour la partie déploiement, j'utilise ansible. J'ai un rôle que j'utilise sur TOUS mes projets.
Courage !
[^] # Re: Django templates rocks
Posté par kr1p . Évalué à 1.
Merci pour ce retour!
sais tu ce qui est le plus pratique entre wagtail, djangocms et mezzanine? Notamment pour la gestion de plusieurs langues ?
Et unicorn pour remplacer le recours au javascript, as tu testé? (jaimerais si possible éviter de me retrouver avec 3000 paquets à gérer)
[^] # Re: Django templates rocks
Posté par François GUÉRIN (Mastodon) . Évalué à 1.
… la réponse à propos du choix, bah c'est pour quoi faire ?
Pour ma part, j'ai testé il y a longtemps django CMS, mais je n'ai pas été convaincu.
Je n'ai pas testé Mezzanine (ou je ne m'en souviens plus), mais j'utilise activement Wagtail, dont je suis très content !
Tu dois garder en tête que le Django est un framework de dévelopement, qui te donne des outils pour faire tourner des applications, qui utilisent une base de données.
Il te fourni des services : l'ORM, la gestions des utilisateurs / groupes / permissions…
Je fait des applis de métier, qui correspondent aux besoins de mes utilisateur : par exemple la gestion des objets trouvée - déclarations pour les citoyens, gestion des stocks pour les agents qui s'en occupe, moteur de recherche sur les objets…
Pour çà, Django est super bien (avec quelques extensions en plus) !
Je gère un intranet avec ~ 30000 pages avec Wagtail, c'est un autre usage de Django, avec une sur-couche pour gérer la partie CMS.
Le développement de ces 2 types de projets est assez différent !
Pour unicorn, je n'ai pas de pistes, mais si c'est du JS / node, tu auras quand même les 3000 dépendances, le JS moderne est comme çà en 2022 !
Et hop, tu les as !
# template
Posté par maroufle34 . Évalué à 1.
Salut,
Si tu cherches des templates django, à vrai dire c'est pas trop le but, Django comme n'importe quel frameword backend utilise un modèle MVS (modèle, vue, contrôleur). Dès lors c'est une base pour du travail d'équipe.
Par contre trouver des sites déjà quasi tout fait au niveau du rendu ne pose aucun problème, il faut juste faire la liaison entre frontend et backend…Le front peut être un simple template Bootstrap, ou plus compliqué comme certains templates Wordpress…Qui lui est très utilisé, même s'il tend à se fondre dans la masse des autres bibliothèques frontend.(REACT, VUE, etc…)
Bref le but de Django c'est de faire du backend…Donc template, sans doute qu'il en existe, mais avec des utilités précises, en aucun cas un look de site ou quoique ce soit d'autre, ça c'est le but d'un frontend, en backend on fait de l'automatisation de tâches, pas tellement plus.
[^] # Re: template
Posté par kr1p . Évalué à 1.
cest du backend mais dans les templates html de django on insere du css du javascript…donc on fait aussi du front. apres je comprend que dans les equipes de production ce soit séparé mais là je vais faire du fullstack car cest un projet perso sur lequel je suis tout seul.
je viens d apprendre django et javascript en une semaine sur coursera donc je débute dans le domaine que ce soit backend ou frontend…
aparemment l'intégration de bootstrap est compatible avec les cms cités plus haut qui sont des extensions de django donc je pense que je pourrai configurer le css pour de jolis rendus avec l'integration de bootstrap effectivement
si jai bien compris react et vue sont des framework javascript comme angular ou autres? en quoi ca consiste exactement, aurais tu des bons docs de synthese sur ces frameworks que je comprenne mieux à quoi ca sert et comment ca s'utilise? jai appris un peu de jQuerry et ajax sur quelques exemples sur coursera mais rien d'autres
[^] # Re: template
Posté par maroufle34 . Évalué à 1. Dernière modification le 19 avril 2022 à 20:02.
Oui mais tout ce qui concerne le front dans Django se retrouve dans la vue (du Modèle, Vue, Controlleur), du coup l'intérêt c'est de pouvoir avoir des devs frontend, et le mettre sur Django ou n'importe quel autre framework backend.
Bootstrap c'est juste du CSS, JQuery une librairie pour faciliter le développement sur javascript, qui n'est pas un langage simple ni pratique (c'est pour ça qu'on essaie de ne pas éditer du javascript tout seul, pour faire des requêtes AJAX par exemple c'est la galère! ça demande beaucoup de code alors qu'on le fait avec 2 lignes JQuery par exemple)
Bref tout ça c'est pas mon boulot, je te conseille le site de grafikart qui a pleins de tutos et formations gratuites, certaines demandent d'être VIP ou un truc comme ça, mais il est très complet, c'est un vrai programmeur fullstack avec 15 ans d'expérience.
[^] # Re: template
Posté par kr1p . Évalué à 1.
merci!
# interface des comptes utilisateurs et admin
Posté par kr1p . Évalué à 1.
Je m'interroge sur le login dans django: aparemment le login de l'administrateur du site et des utilisateurs lambda se fait sur le même formulaire. Est ce que ca ne pose pas de problemes de sécurité? j'aurais préféré faire un formulaire spécial pour le login de l'admin mais peut etre que ca ne se fait pas?
Sinon autre question sur les bases de données dans django: est ce que cest pertinent de faire une base postgres qui gere les utilisateurs et une table de bases sqlite pour chaque utilisateur ou est ce que cest se compliquer la vie? j'avais tendance à penser qu'isoler les tables de chaque utilisateurs pour ne pas retrouver des données de chaque utilisateur dans la meme table serait plus sûr mais j'ai l'impression qu'on ne fonctionne pas vraiment de cette facon dans les modeles classiques de bases de données django
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.