Форум программистов, компьютерный форум, киберфорум
Python: Web
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 Аватар для Серый_Ветер
21 / 21 / 12
Регистрация: 09.01.2013
Сообщений: 456

Календарь на весь год в виде страницы http

23.05.2025, 23:16. Показов 1204. Ответов 0

Студворк — интернет-сервис помощи студентам
Доброго времени.

подскажите, как реализовать одну задачу.
имею календарь формата html реализованный на python 2.7 (знаю что старая версия, но нельзя выше.)


Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#!/usr/bin/env python
# -*- coding: utf-8 -*-
 
from bottle import route, run, template, request, response, static_file, redirect
from time import mktime, strptime
from time import strftime, localtime
from datetime import timedelta
 
 
from conf import *
 
#signal.signal(signal.SIGCHLD, signal.SIG_IGN)
 
import sqlite3, datetime, webbrowser, calendar, locale, os, re, sys, json, subprocess
reload(sys)
sys.setdefaultencoding('utf8')
locale.setlocale(locale.LC_ALL,'en-US')
@route('/static/<path:path>')
def static(path):
    return static_file(path, root='static')
 
@route('/')
def calend():
    eng_to_ru_months = {'January': 'Январь', 'February': 'Февраль', 'March': 'Март', 'April': 'Апрель', 'May': 'Май', 'June': 'Июнь', 'July': 'Июль', 'August': 'Август', 'September': 'Сентябрь', 'October': 'Октябрь', 'November': 'Ноябрь', 'December': 'Декабрь'}
    def eng_to_ru_datetime(rudm):
        dm = rudm.split('-')
        eng_month  = eng_to_ru_months[dm[0]]
        return eng_month + ' ' + dm[1]
 
    dm = datetime.date.today().strftime("%B-%Y")
    sru = eng_to_ru_datetime(dm)
    sru = sru.decode("utf-8")
 
    cald = calendar.LocaleHTMLCalendar(0, "ru_RU.UTF-8")
    cald = cald.formatmonth(datetime.date.today().year,datetime.date.today().month)
 
    cald = cald.replace('<table border="0" cellpadding="0" cellspacing="0" class="month">','<div class="calendar-table">').replace('</table>','</div>')
    cald = re.sub('<th colspan="7" class="month">\W{3,9}.+</th>','', cald)
    cald = cald.replace('<tr>','<div class="table-row">').replace('</tr>','</div>')
    cald = re.sub('<th class="([a-z]+)">',r'<div class="table-cell \1 week"><div class="cell-wrapper"><div class="cell-content">', cald)
    cald = cald.replace('</th>','</div></div></div>')
    cald = re.sub('<td class="([a-z]+)">',r'<div class="table-cell \1"><div class="cell-wrapper"><div class="cell-content">', cald)
    cald = cald.replace('</td>','</div></div></div>')
    dtoday = datetime.date.today().strftime("%d")
    dtoday = dtoday.lstrip('0')
    cald = re.sub(r'<div class="table-cell ([a-z]+)"><div class="cell-wrapper"><div class="cell-content">'+dtoday+'</div>', r'<div class="table-cell \1 onday"><div class="cell-wrapper onday"><div class="cell-content">'+dtoday+'</div>', cald)
    cald = cald.replace('<div class="table-row"><div class="table-cell noday"><div class="cell-wrapper"><div class="cell-content">&nbsp;</div></div></div><div class="table-cell noday"><div class="cell-wrapper"><div class="cell-content">&nbsp;</div></div></div><div class="table-cell noday"><div class="cell-wrapper"><div class="cell-content">&nbsp;</div></div></div><div class="table-cell noday"><div class="cell-wrapper"><div class="cell-content">&nbsp;</div></div></div><div class="table-cell noday"><div class="cell-wrapper"><div class="cell-content">&nbsp;</div></div></div><div class="table-cell noday"><div class="cell-wrapper"><div class="cell-content">&nbsp;</div></div></div><div class="table-cell sun"><div class="cell-wrapper"><div class="cell-content">1</div></div></div></div>', '<div class="table-row"><div class="table-cell noday"><div class="cell-wrapper"><div class="cell-content">&nbsp;</div></div></div><div class="table-cell noday"><div class="cell-wrapper"><div class="cell-content">&nbsp;</div></div></div><div class="table-cell noday"><div class="cell-wrapper"><div class="cell-content">&nbsp;</div></div></div><div class="table-cell noday"><div class="cell-wrapper"><div class="cell-content">&nbsp;</div></div></div><div class="table-cell noday"><div class="cell-wrapper"><div class="cell-content">&nbsp;</div></div></div><div class="table-cell sat"><div class="cell-wrapper"><div class="cell-content">&nbsp;</div></div></div><div class="table-cell sun"><div class="cell-wrapper"><div class="cell-content">1</div></div></div></div>')
    cald = cald.replace('<div class="table-cell noday"><div class="cell-wrapper"><div class="cell-content">&nbsp;</div></div></div><div class="table-cell noday"><div class="cell-wrapper"><div class="cell-content">&nbsp;</div></div></div></div>','<div class="table-cell sat"><div class="cell-wrapper"><div class="cell-content">&nbsp;</div></div></div><div class="table-cell sun"><div class="cell-wrapper"><div class="cell-content">&nbsp;</div></div></div></div>')
    cald = cald.replace('<div class="table-cell noday"><div class="cell-wrapper"><div class="cell-content">&nbsp;</div></div></div></div>','<div class="table-cell sun"><div class="cell-wrapper"><div class="cell-content">&nbsp;</div></div></div></div>')
    cald = cald.replace('Пнд', 'Пн').replace('Втр', 'Вт').replace('Срд', 'Ср').replace('Чтв', 'Чт').replace('Птн', 'Пт').replace('Сбт', 'Сб').replace('Вск', 'Вс')
 
    return template('calendar', cald=cald, sru=sru)
к нему еще css есть, нужно ли выкладывать?

поступила задача от руководства, реализовать календарь на весь год.
чтобы кнопкой слева/справа можно было выбрать нужный месяц.

целиком весь год вывести получилось.
а как его выводить помесячно - пока не понял.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.05.2025, 23:16
Ответы с готовыми решениями:

http клиент и http сервер на Python
Клиент должен уметь кидать запросы на сервер с адресом http://127.0.0.1:{port}/{method} , где port...

Напечатать таблицу соответствия между весом в фунтах и весом в килограммах
Помогите решить задачу. Напечатать таблицу соответствия между весом в фунтах и весом в...

Найти и записать в файл имена пассажиров, вес багажа которых превосходит средний вес багажа одного пассажира.
Составить программу, которая находит и записывает в файл g имена пассажиров, вес багажа которых...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.05.2025, 23:16
Помогаю со студенческими работами здесь

Parser Http страницы
Здравствуйте, как распарсить http в html? Знаю что это возможно но не понимаю как. В инете находил...

Сохранение состояния фильтров после обновления страницы при HTTP REFERER
Всем привет! Вкратце опишу суть проблемы, пока без кода, чтобы понимать, можно ли вообще это как-то...

Делаю парсинг страницы, работаю с апи, и отдает не весь текст, почему так
Делаю парсинг страницы, работаю с апи, и отдает не весь текст, почему так? Заранее спасибо ...

При парсинге получается не весь код страницы
Обучаюсь парсингу и заметил такую странность что в странице которую я получаю отсутствует часть...

При наследовании шаблона страницы, при переходе на нее выводиться весь код в браузере
Есть шаблон на котором определена разметка страницы. Я подключаю этот шаблон к &quot;.html&quot; страницам...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru