Създайте HTML календар в Python динамично

Питон календар модулът е част от стандартната библиотека. Той позволява извеждането на календар по месеци или по години, а също така предоставя и други, свързани с календара функции.

Най- календар Самият модул зависи от модула за дата. Но ние също ще имаме нужда Време за среща за нашите собствени цели по-късно, така че е най-добре да импортирате и двете. Също така, за да направим разделяне на низове, ще ни трябва ре модул. Нека ги импортираме еднократно.

По подразбиране календарите започват седмицата с понеделник (ден 0), съгласно Европейската конвенция, и завършват с неделя (ден 6). Ако предпочитате неделята като първи ден от седмицата, използвайте setfirstweekday () метод за промяна на по подразбиране до 6-ия ден, както следва:

За да превключвате между двете, можете да преминете първия ден от седмицата като аргумент, използвайки сис модул. След това ще проверите стойността с ако изявление и задайте setfirstweekday () метод съответно.

В нашия календар би било хубаво да има заглавка на календара, която да чете нещо като "Календар, генериран от Python For ..." и да има текущия месец и година. За да направим това, трябва да получим месеца и годината от системата. Тази функционалност е нещо, което

календар осигурява, Python може да извлече месеца и годината. Но все пак имаме проблем. Тъй като всички системни дати са цифрови и не съдържат несъкратени или нечислени форми на месеците, имаме нужда от списък на тези месеци. Въведете списъка година.

Сега, когато получим числото на месец, можем да получим достъп до това число (минус едно) в списъка и да получим пълното име на месеца.

Любопитното е, че Време за среща модул има a Време за среща клас. Именно от този клас наричаме два обекта: сега() и дата(). Методът datetime.datetime.now () връща обект, съдържащ следната информация: година, месец, дата, час, минута, секунда и микросекунди. Разбира се, нямаме нужда от информация за времето. За да изречем сами информацията за датата, предаваме резултатите от сега() да се datetime.datetime.date () като аргумент. Резултатът е това днес сега съдържа годината, месеца и датата, разделени с em-тирета.

За да разбием този бит данни на по-управляеми части, трябва да го разделим. След това можем да присвоим частите на променливите current_yr, текущ месец, и current_day съответно.

За да разберете първия ред от този код, работете отдясно наляво и отвътре навън. Първо ние обединяваме обекта днес за да работи върху него като низ. След това го разделихме, използвайки ем-тирето като разделител или знак. И накрая, ние приписваме тези три стойности като списък на „текущи“.

За да се справим по-ясно с тези стойности и да извикаме дългото име на текущия месец година, присвояваме номера на месеца current_no. След това можем да направим малко изваждане в индекса на година и да зададете името на месеца текущ месец.

В следващия ред е необходимо малко заместване. Датата, от която е върната Време за среща е двуцифрена стойност дори за първите девет дни от месеца. Нула функционира като притежател на място, но бихме предпочели календарът ни да е само с една цифра. Така че ние заместваме никаква стойност за всяка нула, която започва низ (оттук '\ A'). И накрая, ние приписваме годината на current_yr, превръщайки го в цяло число по пътя.

Методите, които ще се обадим по-късно, ще изискват въвеждане в цяло число. Ето защо е важно да се гарантира, че всички данни за датата се запазват в цяло число, а не низ.

Преди да отпечатаме календара, трябва да отпечатамеHTML преамбула и CSS оформление за нашия календар. Отидете на тази страница за кода, за да отпечатате CSS и HTML преамбула за календара. и копирайте кода във вашия програмен файл. CSS в HTML на този файл следва шаблона, предложен от Дженифър Кирнин, Ръководство за уеб дизайна. Ако не разбирате тази част от кода, може да искате да се консултирате с нейната помощ за изучаване на CSS и HTML. И накрая, за да персонализираме името на месеца, се нуждаем от следния ред:

Сега, когато се извежда основното оформление, можем да настроим самия календар. Календар, в най-основната му точка, е таблица. Затова нека направим таблица в нашия HTML:

Сега трябва да създадем действителния календар. За да получим действителните данни от календара, се нуждаем от календар модула monthcalendar () метод. Този метод взема два аргумента: годината и месеца на желания календар (и двата в цяло число). Той връща списък, който съдържа списъци на датите на месеца по седмици. Така че, ако броим броя на елементите във върнатата стойност, имаме броя седмици в дадения месец.

Знаейки броя седмици в месеца, можем да създадем a за цикъл, който се брои през a спектър () от 0 до броя седмици. Докато го прави, той ще разпечата останалата част от календара.

След като този диапазон е стартиран, датите на седмицата се извличат от месец според стойността на брояча и присвоено на седмица. След това се създава табличен ред, за да държи календарните дати.

А за След това цикълът преминава през дните от седмицата, за да могат да бъдат анализирани. Най- календар модул отпечатва "0" за всяка дата в таблицата, която няма валидна стойност. Празна стойност ще работи по-добре за нашите цели, така че ние отпечатваме връзките на табличните данни без стойност за тези дати.

На следващо място, ако денят е текущият, трябва да го подчертаем по някакъв начин. Базиран на TD клас днес, CSS на тази страница ще доведе до представяне на текущата дата на тъмен фон, вместо на светлия фон на останалите дати.

И накрая, ако датата е валидна стойност и не е текущата дата, тя се отпечатва като таблични данни. Точните цветови комбинации за тях се съхраняват в преамбюла на CSS стил.

Просто този прост календар може да се използва по всякакъв начин, който се нуждае от представяне на календара. Чрез хипервръзка на датите в HTML, човек лесно може да създаде функционалност на дневника. Друга възможност е да проверите дали има дневник и след това да отразявате кои дати са взети според цвета им. Или, ако човек преобразува тази програма в CGI скрипт, може да я генерира в движение.