Vytvoření kalendáře HTML dynamicky v Pythonu

Python je kalendář modul je součástí standardní knihovny. Umožňuje výstup kalendáře podle měsíce nebo roku a také poskytuje další funkce související s kalendářem.

kalendář samotný modul závisí na modulu datetime. Ale budeme také potřebovat čas schůzky pro naše vlastní účely později, takže je nejlepší oba importovat. Také, abychom mohli udělat nějaké rozdělení řetězců, budeme potřebovat re modul. Pojďme je všechny importovat najednou.

Ve výchozím nastavení kalendáře začínají týden s pondělí (den 0) podle evropské konvence a končí nedělí (den 6). Pokud dáváte přednost neděli jako první den v týdnu, použijte setfirstweekday () metoda změnit výchozí na den 6 následujícím způsobem:

Chcete-li přepínat mezi těmito dvěma, můžete předat první den v týdnu jako argument pomocí sys modul. Pak byste zkontrolovali hodnotu pomocí -li prohlášení a nastavit setfirstweekday () podle toho.

V našem kalendáři by bylo hezké mít hlavičku kalendáře, která bude číst něco jako „Kalendář generovaný Pythonem pro ...“ a mít aktuální měsíc a rok. Abychom to mohli udělat, musíme ze systému získat měsíc a rok. Tato funkce je něco, co

kalendář pokud Python dokáže načíst měsíc a rok. Ale stále máme problém. Protože všechna systémová data jsou číselná a neobsahují nezkrácené ani nečíselné formy měsíců, potřebujeme seznam těchto měsíců. Zadejte seznam rok.

Nyní, když dostaneme číslo měsíce, můžeme získat přístup k tomuto číslu (mínus jedno) v seznamu a získat celé jméno měsíce.

Zvědavě, čas schůzky modul má čas schůzky třída. Z této třídy nazýváme dva objekty: Nyní() a datum(). Metoda datetime.datetime.now () vrátí objekt obsahující následující informace: rok, měsíc, datum, hodinu, minutu, sekundu a mikrosekundy. Časové informace samozřejmě nepotřebujeme. Chcete-li vyřadit pouze informace o datu, předáváme výsledky Nyní() na datetime.datetime.date () jako argument. Výsledkem je, že dnes nyní obsahuje rok, měsíc a datum oddělené em-pomlčkami.

Abychom rozdělili tento kousek dat na více zvládnutelné kousky, musíme je rozdělit. Potom můžeme části přiřadit k proměnným current_yr, aktuální měsíc, a aktuální den resp.

Chcete-li pochopit první řádek tohoto kódu, postupujte zprava doleva a zevnitř ven. Nejprve objekt zřetězíme dnes aby na něm fungoval jako řetězec. Pak jsme to rozdělili pomocí em-dash jako oddělovač nebo token. Nakonec přidělíme tyto tři hodnoty jako seznam „aktuálnímu“.

Aby bylo možné s těmito hodnotami zacházet zřetelněji a zavolat dlouhé jméno aktuálního měsíce z rok, přidělíme číslo měsíce aktuální_no. Potom můžeme udělat odčítání v dolním indexu rok a přiřaďte jméno měsíce aktuální měsíc.

V dalším řádku je potřeba trochu substituce. Datum, od kterého se vrací čas schůzky je dvouciferná hodnota i během prvních devíti dnů v měsíci. Nulová funkce funguje jako zástupný symbol místa, ale raději bychom měli, aby náš kalendář obsahoval pouze jednu číslici. Takže nenahrazujeme žádnou hodnotu za každou nulu, která začíná řetězec (odtud '\ A'). Nakonec přidělíme rok current_yr, přeměnit to na celé číslo podél cesty.

Metody, které budeme volat později, budou vyžadovat vstup v celočíselném formátu. Proto je důležité zajistit, aby všechna data byla uložena v celočíselném, nikoli řetězcovém tvaru.

Než začneme tisknout kalendář, musíme vytisknoutHTML rozvržení preambule a CSS pro náš kalendář. Na této stránce najdete kód pro tisk preambule CSS a HTML pro kalendář. a zkopírujte kód do svého programového souboru. CSS v HTML tohoto souboru se řídí šablonou nabízenou Jennifer Kyrnin, About's Guide to Web Design. Pokud této části kódu nerozumíte, možná budete chtít požádat o pomoc s učením CSS a HTML. Nakonec potřebujeme následující řádek:

Nyní, když je základní rozvržení na výstupu, můžeme nastavit kalendář sám. Kalendář, v jeho nejzákladnějším bodě, je tabulka. Vytvořme tedy tabulku v našem HTML:

Nyní musíme vytvořit skutečný kalendář. K získání skutečných dat kalendáře potřebujeme kalendář modulů měsíční kalendář () metoda. Tato metoda má dva argumenty: rok a měsíc požadovaného kalendáře (oba v celočíselné podobě). Vrací seznam obsahující seznamy dat měsíce v týdnu. Pokud tedy spočítáme počet položek ve vrácené hodnotě, máme počet týdnů v daném měsíci.

Znát počet týdnů v měsíci, můžeme vytvořit pro smyčka, která se počítá prostřednictvím a rozsah() od 0 do počtu týdnů. Stejně tak vytiskne zbytek kalendáře.

Po spuštění této řady jsou data týdne vyřazena Měsíc podle hodnoty čítače a přiřazené týden. Poté je vytvořen tabulkový řádek, který bude obsahovat kalendářní data.

A pro smyčka pak prochází dny v týdnu, takže je lze analyzovat. kalendář modul vytiskne „0“ pro každé datum v tabulce, které nemá platnou hodnotu. Prázdná hodnota by pro naše účely fungovala lépe, takže pro tato data vytiskneme záložky tabulkových dat bez hodnoty.

Dále, pokud je den aktuální, měli bychom ho nějak zdůraznit. Založeno na td třída dnes, CSS této stránky způsobí, že aktuální datum bude vykresleno na tmavém pozadí místo na světlém pozadí ostatních dat.

A konečně, pokud je datum platné a nejedná se o aktuální datum, vytiskne se jako tabulková data. Přesné barevné kombinace jsou drženy v preambuli stylu CSS.

Právě tento jednoduchý kalendář lze použít jakýmkoli způsobem, který vyžaduje zobrazení kalendáře. Hyperlinking data v HTML, jeden může snadno vytvořit deník funkce. Alternativně lze zkontrolovat oproti souboru deníku a pak přemýšlet o tom, která data se berou podle jejich barvy. Nebo, pokud někdo převede tento program na skript CGI, dá se nechat generovat za běhu.