Maak dynamisch een HTML-agenda in Python

click fraud protection

Python kalender module maakt deel uit van de standaardbibliotheek. Het maakt de output van een kalender per maand of per jaar mogelijk en biedt ook andere, kalendergerelateerde functionaliteit.

De kalender module zelf hangt af van de datetime-module. Maar we zullen het ook nodig hebben datum Tijd voor onze eigen doeleinden later, dus het is het beste om beide te importeren. Om een ​​string te splitsen, hebben we ook de opnieuw module. Laten we ze allemaal in één keer importeren.

Standaard beginnen de kalenders de week met maandag (dag 0), volgens de Europese conventie, en eindigen met zondag (dag 6). Als u zondag als eerste dag van de week verkiest, gebruikt u de setfirstweekday () methode om de standaardwaarde als volgt te wijzigen in dag 6:

Om tussen de twee te schakelen, kunt u de eerste dag van de week als argument doorgeven met de sys module. U zou dan de waarde controleren met een als verklaring en stel de setfirstweekday () methode dienovereenkomstig.

In onze kalender zou het leuk zijn om een ​​koptekst voor de kalender te hebben met zoiets als "Een door Python gegenereerde kalender voor ..." en de huidige maand en het jaar te hebben. Om dit te doen, moeten we de maand en het jaar uit het systeem halen. Deze functionaliteit is iets dat

instagram viewer
kalender biedt, kan Python de maand en het jaar ophalen. Maar we hebben nog steeds een probleem. Omdat alle systeemdatums numeriek zijn en geen niet-verkorte of niet-numerieke vormen van de maanden bevatten, hebben we een lijst met die maanden nodig. Voer de lijst in jaar.

Als we nu het nummer van een maand krijgen, hebben we toegang tot dat nummer (min één) in de lijst en krijgen we de volledige maandnaam.

Vreemd genoeg, de datum Tijd module heeft een datum Tijd klasse. Het is uit deze klasse dat we twee objecten noemen: nu() en datum(). De methode datetime.datetime.now () retourneert een object dat de volgende informatie bevat: jaar, maand, datum, uur, minuut, seconde en microseconden. Natuurlijk hebben we geen tijdinformatie nodig. Om alleen de datuminformatie te verwijderen, geven we de resultaten van door nu() naar datetime.datetime.date () als een argument. Het resultaat is dat vandaag bevat nu het jaar, de maand en de datum gescheiden door em-streepjes.

Om dit stukje gegevens in meer beheersbare stukjes op te splitsen, moeten we het splitsen. We kunnen vervolgens de onderdelen aan de variabelen toewijzen current_yr, deze maanden huidige dag respectievelijk.

Om de eerste regel van deze code te begrijpen, werkt u van rechts naar links en van binnen naar buiten. Eerst stringiseren we het object vandaag om er als een string aan te werken. Vervolgens splitsen we het met behulp van het em-dashboard als scheidingsteken of token. Ten slotte wijzen we die drie waarden als een lijst toe aan 'actueel'.

Om duidelijker met deze waarden om te gaan en de lange naam van de huidige maand uit te roepen jaar, wijzen we het nummer van de maand toe aan huidig_nr. We kunnen dan een beetje aftrekken in het subscript van jaar en wijs de maandnaam toe aan deze maand.

In de volgende regel is een beetje vervanging nodig. De datum waarvan wordt geretourneerd datum Tijd is een tweecijferige waarde, zelfs voor de eerste negen dagen van de maand. Een nul functioneert als een plaatshouder, maar we hebben liever dat onze kalender slechts één cijfer heeft. We vervangen dus geen waarde voor elke nul die met een string begint (vandaar '\ A'). Ten slotte wijzen we het jaar toe aan current_yr, het omzetten naar een geheel getal onderweg.

Voor methoden die we later zullen aanroepen, is invoer in gehele getallen vereist. Daarom is het belangrijk om ervoor te zorgen dat alle datumgegevens worden opgeslagen in een geheel getal en niet in een tekenreeks.

Voordat we de kalender afdrukken, moeten we deHTML preambule en CSS-indeling voor onze kalender. Ga naar deze pagina voor de code om de CSS- en HTML-preambule voor de kalender af te drukken. en kopieer de code naar uw programmabestand. De CSS in de HTML van dit bestand volgt de sjabloon aangeboden door Jennifer Kyrnin, About's Guide to Web Design. Als u dit deel van de code niet begrijpt, kunt u haar helpen bij het leren van CSS en HTML. Tot slot hebben we de volgende regel nodig om de naam van de maand aan te passen:

Nu de basislay-out is uitgevoerd, kunnen we de kalender zelf instellen. Een kalender is op het meest elementaire punt een tabel. Laten we een tabel maken in onze HTML:

Nu moeten we de eigenlijke kalender maken. Voor de actuele agendagegevens hebben we de kalender modules maandkalender () methode. Deze methode heeft twee argumenten: het jaar en de maand van de gewenste kalender (beide in gehele vorm). Het retourneert een lijst met lijsten met de datums van de maand per week. Dus als we het aantal items in de geretourneerde waarde tellen, hebben we het aantal weken in de opgegeven maand.

Als we het aantal weken van de maand kennen, kunnen we een voor lus die door een loopt bereik () van 0 tot het aantal weken. Terwijl het dat doet, wordt de rest van de kalender afgedrukt.

Nadat dit bereik is gestart, worden de datums van de week opgehaald maand volgens de waarde van de teller en toegewezen aan week. Vervolgens wordt een tabelrij gemaakt om de kalenderdatums te bevatten.

EEN voor loop loopt vervolgens door de dagen van de week zodat ze kunnen worden geanalyseerd. De kalender module drukt een '0' af voor elke datum in de tabel die geen geldige waarde heeft. Een lege waarde zou beter werken voor onze doeleinden, dus drukken we de boekensteunen van tabelgegevens af zonder een waarde voor die datums.

Vervolgens, als de dag de huidige is, moeten we deze op de een of andere manier markeren. Gebaseerd op de td klasse vandaag, zorgt de CSS van deze pagina ervoor dat de huidige datum wordt weergegeven tegen een donkere achtergrond in plaats van de lichte achtergrond van de andere datums.

Als de datum ten slotte een geldige waarde is en niet de huidige datum, wordt deze afgedrukt als tabelgegevens. De exacte kleurencombinaties hiervoor worden in de inleiding van de CSS-stijl bewaard.

Alleen deze eenvoudige kalender kan op elke manier worden gebruikt die een kalenderweergave nodig heeft. Door de datums in de HTML te hyperlinken, kan men gemakkelijk een dagboekfunctionaliteit creëren. Als alternatief kan men vergelijken met een dagboekbestand en dan reflecteren welke datums worden genomen door hun kleur. Of, als je dit programma converteert naar een CGI-script, kun je het meteen laten genereren.

instagram story viewer