Créer dynamiquement un calendrier HTML en Python

Python calendrier module fait partie de la bibliothèque standard. Il permet la sortie d'un calendrier par mois ou par année et fournit également d'autres fonctionnalités liées au calendrier.

le calendrier le module lui-même dépend du module datetime. Mais nous aurons également besoin datetime pour nos propres besoins plus tard, il est donc préférable d'importer les deux. De plus, pour effectuer un fractionnement de chaîne, nous aurons besoin du module. Importons-les tous en une seule fois.

Par défaut, les calendriers commencent la semaine avec lundi (jour 0), selon la convention européenne, et se terminent avec dimanche (jour 6). Si vous préférez le dimanche comme premier jour de la semaine, utilisez le setfirstweekday () pour changer la valeur par défaut au jour 6 comme suit:

Pour basculer entre les deux, vous pouvez passer le premier jour de la semaine en argument en utilisant le paramètre sys module. Vous vérifieriez alors la valeur avec un si et définir la setfirstweekday () méthode en conséquence.

instagram viewer

Dans notre calendrier, il serait bien d'avoir un en-tête pour le calendrier qui lise quelque chose comme "Un calendrier généré par Python pour ..." et d'avoir le mois et l'année en cours. Pour ce faire, nous devons obtenir le mois et l'année du système. Cette fonctionnalité est quelque chose qui calendrier fournit, Python peut récupérer le mois et l'année. Mais nous avons toujours un problème. Comme toutes les dates système sont numériques et ne contiennent pas de formes non abrégées ou non numériques des mois, nous avons besoin d'une liste de ces mois. Entrez dans la liste année.

Maintenant, lorsque nous obtenons le numéro d'un mois, nous pouvons accéder à ce numéro (moins un) dans la liste et obtenir le nom complet du mois.

Curieusement, le datetime module a un datetime classe. C'est à partir de cette classe que nous appelons deux objets: maintenant() et Date(). La méthode datetime.datetime.now () renvoie un objet contenant les informations suivantes: année, mois, date, heure, minute, seconde et microsecondes. Bien sûr, nous n'avons pas besoin d'informations sur l'heure. Pour éliminer uniquement les informations de date, nous transmettons les résultats de maintenant() à datetime.datetime.date () comme argument. Le résultat est que aujourd'hui contient désormais l'année, le mois et la date séparés par des tirets.

Pour diviser ce morceau de données en éléments plus gérables, nous devons les diviser. On peut ensuite assigner les pièces aux variables current_yr, mois en cours, et jour actuel respectivement.

Pour comprendre la première ligne de ce code, travaillez de droite à gauche et de l'intérieur vers l'extérieur. D'abord, on stringifie l'objet aujourd'hui afin d'opérer dessus comme une chaîne. Ensuite, nous le séparons en utilisant le em-dash comme délimiteur ou jeton. Enfin, nous attribuons ces trois valeurs sous forme de liste à «actuelles».

Afin de traiter ces valeurs plus distinctement et d'appeler le nom long du mois en cours hors de année, nous attribuons le numéro du mois à current_no. On peut alors faire un peu de soustraction dans l'indice de année et attribuez le nom du mois à mois en cours.

Dans la ligne suivante, un peu de substitution est nécessaire. La date de retour de datetime est une valeur à deux chiffres même pour les neuf premiers jours du mois. Un zéro fonctionne comme un espace réservé, mais nous préférons que notre calendrier n'ait qu'un seul chiffre. Nous substituons donc aucune valeur à chaque zéro qui commence une chaîne (d'où «\ A»). Enfin, nous attribuons l'année à current_yr, en le convertissant en entier en cours de route.

Les méthodes que nous appellerons plus tard nécessiteront une entrée au format entier. Par conséquent, il est important de s'assurer que toutes les données de date sont enregistrées sous forme d'entier et non de chaîne.

Avant d'imprimer le calendrier, nous devons imprimer leHTML préambule et mise en page CSS pour notre calendrier. Accédez à cette page pour obtenir le code permettant d'imprimer le préambule CSS et HTML du calendrier. et copiez le code dans votre fichier programme. Le CSS dans le HTML de ce fichier suit le modèle proposé par Jennifer Kyrnin, About's Guide to Web Design. Si vous ne comprenez pas cette partie du code, vous pouvez consulter ses aides pour apprendre CSS et HTML. Enfin, pour personnaliser le nom du mois, nous avons besoin de la ligne suivante:

Maintenant que la disposition de base est sortie, nous pouvons configurer le calendrier lui-même. Un calendrier, à son point le plus élémentaire, est une table. Faisons donc un tableau dans notre HTML:

Nous devons maintenant créer le calendrier réel. Pour obtenir les données réelles du calendrier, nous avons besoin du calendrier modules calendrier mensuel () méthode. Cette méthode prend deux arguments: l'année et le mois du calendrier souhaité (tous deux sous forme d'entier). Il renvoie une liste qui contient des listes des dates du mois par semaine. Donc, si nous comptons le nombre d'articles dans la valeur retournée, nous avons le nombre de semaines dans le mois donné.

Connaissant le nombre de semaines dans le mois, nous pouvons créer un pour boucle qui compte à travers un intervalle() de 0 au nombre de semaines. Ce faisant, il imprimera le reste du calendrier.

Après le début de cette plage, les dates de la semaine sont supprimées de mois en fonction de la valeur du compteur et affecté à la semaine. Ensuite, une ligne tabulaire est créée pour contenir les dates du calendrier.

UNE pour La boucle parcourt ensuite les jours de la semaine pour pouvoir les analyser. le calendrier Le module imprime un «0» pour chaque date du tableau qui n'a pas de valeur valide. Une valeur vide fonctionnerait mieux pour nos besoins, nous imprimons donc les serre-livres des données tabulaires sans valeur pour ces dates.

Ensuite, si le jour est le jour actuel, nous devons le mettre en évidence d'une manière ou d'une autre. Basé sur td classe aujourd'hui, le CSS de cette page entraînera le rendu de la date actuelle sur un fond sombre au lieu du fond clair des autres dates.

Enfin, si la date est une valeur valide et n'est pas la date actuelle, elle est imprimée sous forme de données tabulaires. Les combinaisons de couleurs exactes pour celles-ci sont contenues dans le préambule de style CSS.

Ce simple calendrier peut être utilisé de n'importe quelle manière qui nécessite une représentation de calendrier. En hyperliant les dates dans le HTML, on peut facilement créer une fonctionnalité d'agenda. Alternativement, on peut vérifier par rapport à un fichier journal et ensuite refléter les dates prises par leur couleur. Ou, si l'on convertit ce programme en script CGI, on peut le faire générer à la volée.