Форум программистов, компьютерный форум, киберфорум
Python: Web
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/18: Рейтинг темы: голосов - 18, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 06.01.2014
Сообщений: 79

Календарь событий

28.11.2016, 23:20. Показов 3763. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!
Есть календарь событий в виде таблицы в html, первый столбец это время события, второй название события (например вынести мусор/помыть машину итд) и третий это его статус (выполнено/не выполнено).
Необходимо что бы название события и его статус брались из БД (mysql, postgresql)
Как это можно реализовать на питоне (без фреймворков)?


HTML5
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8">
  <title>Календарь событий</title>
  <style>
   #time {
    width: 100px;
    }
   #status {
    width: 100px;
   }
   table {
    width: 600px;
    background: white;
    color: black;
    border-spacing: 1px;
   }
   td, th {
    padding: 5px;
   }
   th {
    background: blue;
  </style>
 </head>
 <body>
  <table border="1">
   <tr>
    <th id="time">Время</th>
    <th>Задача</th>
    <th id="status" >Статус</th>
   </tr>
   <tr>
    <td>08:00</td>
    <td>Сделать зарядку</td>
    <td>Выполнено</td>
  </tr>
   <tr>
    <td>09:00</td>
    <td>Умыться</td>
    <td>Выполнено</td>
  </tr>
     <tr>
    <td>10:00</td>
    <td>Позавтракать</td>
    <td>Выполнено</td>
  </tr>
     <tr>
    <td>11:00</td>
    <td>Ячейка 2</td>
    <td>Ячейка 3</td>
  </tr>   <tr>
    <td>12:00</td>
    <td>Ячейка 2</td>
    <td>Ячейка 3</td>
  </tr>   <tr>
    <td>13:00</td>
    <td>Ячейка 2</td>
    <td>Ячейка 3</td>
  </tr>
     <tr>
    <td>14:00</td>
    <td>Ячейка 2</td>
    <td>Ячейка 3</td>
  </tr>
     <tr>
    <td>15:00</td>
    <td>Ячейка 2</td>
    <td>Ячейка 3</td>
  </tr>
     <tr>
    <td>16:00</td>
    <td>Ячейка 2</td>
    <td>Ячейка 3</td>
  </tr>
     <tr>
    <td>17:00</td>
    <td>Ячейка 2</td>
    <td>Ячейка 3</td>
  </tr>
     <tr>
    <td>18:00</td>
    <td>Ячейка 2</td>
    <td>Ячейка 3</td>
  </tr>
     <tr>
    <td>19:00</td>
    <td>Ячейка 2</td>
    <td>Ячейка 3</td>
  </tr>
     <tr>
    <td>20:00</td>
    <td>Ячейка 2</td>
    <td>Ячейка 3</td>
  </tr>
     <tr>
    <td>21:00</td>
    <td>Ячейка 2</td>
    <td>Ячейка 3</td>
  </tr>
     <tr>
    <td>22:00</td>
    <td>Ячейка 2</td>
    <td>Ячейка 3</td>
  </tr>
 </table>
 </body>
</html>
Миниатюры
Календарь событий  
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.11.2016, 23:20
Ответы с готовыми решениями:

Календарь событий
Подскажите, нужен календарь для записи в него расписания в php, какой использовать? или писать самостоятельно? вот такого плана

календарь событий
мне срочно надо сделать плагин для вордпреса . функции плагина заключаются в том чтобы он напоминал о днях рождениях (он это должен читать...

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

18
Эксперт по компьютерным сетям
 Аватар для Jabbson
5906 / 3358 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
29.11.2016, 00:41
не совсем понятно, что должно быть результатом - html файл или сервер, который бы обслуживал запросы и возвращал такую таблицу в виде страницы?
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
29.11.2016, 01:36
Если вся твоя тема посвящена вопросу создания сайта на python, который будет представлять из себя "календарь событий" то ответ
Цитата Сообщение от IceTony Посмотреть сообщение
Как это можно реализовать на питоне (без фреймворков)?
В прицепи можно, но так НИ КТО не делает ибо это глупейшая затея.

Если цель максимально много писать кода, то вот тебе самый легкий фреемворк (даже можешь называть его просто библиотекой) https://falconframework.org/ для создания сайтов, который наверно только можно придумать. Там по сути реализована только базовая работа с http, остальное будешь ручками пилить.
0
0 / 0 / 0
Регистрация: 06.01.2014
Сообщений: 79
29.11.2016, 07:41  [ТС]
Цитата Сообщение от Jabbson Посмотреть сообщение
не совсем понятно, что должно быть результатом - html файл или сервер, который бы обслуживал запросы и возвращал такую таблицу в виде страницы?
Нужно что бы все данные хранились на сервере в sql-таблицах, а html-табличка брала данные из этой БД
Т.е. пустая таблица на html, все данные из БД
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5906 / 3358 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
29.11.2016, 07:56
то есть Вас нужен скрипт, который вынет данные из базы и создаст .html файл из этих данных?
0
0 / 0 / 0
Регистрация: 06.01.2014
Сообщений: 79
29.11.2016, 08:16  [ТС]
Цитата Сообщение от Jabbson Посмотреть сообщение
то есть Вас нужен скрипт, который вынет данные из базы и создаст .html файл из этих данных?
Я вижу это так: html файл с пустой таблицей будет заранее создан, в ячейках таблицы будут данные взятые из БД
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5906 / 3358 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
29.11.2016, 08:40
шаблон:

HTML5
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
<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8">
  <title>Календарь событий</title>
  <style>
   #time {{
    width: 100px;
    }}
   #status {{
    width: 100px;
   }}
   table {{
    width: 600px;
    background: white;
    color: black;
    border-spacing: 1px;
   }}
   td, th {{
    padding: 5px;
   }}
   th {{
       background: blue;
   }}
  </style>
 </head>
 <body>
  <table border="1">
   <tr>
    <th id="time">Время</th>
    <th>Задача</th>
    <th id="status" >Статус</th>
   </tr>
   {html_rows}
 </table>
 </body>
</html>
код:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import sqlite3
 
row = '''
<tr>
    <td>{task_time}</td>
    <td>{task}</td>
    <td>{status}</td>
</tr>
'''
 
html_rows = str()
 
conn = sqlite3.connect('sqldb.db')
cur = conn.cursor()
 
cur.execute('SELECT * from tasks;')
rows = cur.fetchall()
 
for task_time, task, status in rows:
    html_rows += row.format(task_time=task_time, task=task, status=status)
 
with open('template.html') as file_obj_in, open('result.html', 'w') as file_obj_out:
    file_obj_out.write(file_obj_in.read().format(html_rows=html_rows))
результат

HTML5
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8">
  <title>Календарь событий</title>
  <style>
   #time {
    width: 100px;
    }
   #status {
    width: 100px;
   }
   table {
    width: 600px;
    background: white;
    color: black;
    border-spacing: 1px;
   }
   td, th {
    padding: 5px;
   }
   th {
       background: blue;
   }
  </style>
 </head>
 <body>
  <table border="1">
   <tr>
    <th id="time">Время</th>
    <th>Задача</th>
    <th id="status" >Статус</th>
   </tr>
   
<tr>
    <td>08:00</td>
    <td>Сделать зарядку</td>
    <td>Выполнено</td>
</tr>
 
<tr>
    <td>09:00</td>
    <td>Умыться</td>
    <td>Выполнено</td>
</tr>
 
<tr>
    <td>10:00</td>
    <td>Позавтракать</td>
    <td>Выполнено</td>
</tr>
 
<tr>
    <td>11:00</td>
    <td>Ячейка 2</td>
    <td>Ячейка 3</td>
</tr>
 
<tr>
    <td>12:00</td>
    <td>Ячейка 2</td>
    <td>Ячейка 3</td>
</tr>
 
<tr>
    <td>13:00</td>
    <td>Ячейка 2</td>
    <td>Ячейка 3</td>
</tr>
 
<tr>
    <td>14:00</td>
    <td>Ячейка 2</td>
    <td>Ячейка 3</td>
</tr>
 
<tr>
    <td>15:00</td>
    <td>Ячейка 2</td>
    <td>Ячейка 3</td>
</tr>
 
<tr>
    <td>16:00</td>
    <td>Ячейка 2</td>
    <td>Ячейка 3</td>
</tr>
 
<tr>
    <td>17:00</td>
    <td>Ячейка 2</td>
    <td>Ячейка 3</td>
</tr>
 
<tr>
    <td>18:00</td>
    <td>Ячейка 2</td>
    <td>Ячейка 3</td>
</tr>
 
<tr>
    <td>19:00</td>
    <td>Ячейка 2</td>
    <td>Ячейка 3</td>
</tr>
 
<tr>
    <td>20:00</td>
    <td>Ячейка 2</td>
    <td>Ячейка 3</td>
</tr>
 
<tr>
    <td>21:00</td>
    <td>Ячейка 2</td>
    <td>Ячейка 3</td>
</tr>
 
<tr>
    <td>22:00</td>
    <td>Ячейка 2</td>
    <td>Ячейка 3</td>
</tr>
 
 </table>
 </body>
</html>


Добавлено через 1 минуту
PS
у Вас скобочка не закрыта

Цитата Сообщение от IceTony Посмотреть сообщение
th {
* * background: blue;
* </style>
PPS
сделал с sqlite, думаю с mysql справитесь?
0
0 / 0 / 0
Регистрация: 06.01.2014
Сообщений: 79
29.11.2016, 10:25  [ТС]
Цитата Сообщение от Jabbson Посмотреть сообщение
шаблон:

HTML5
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
<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8">
  <title>Календарь событий</title>
  <style>
   #time {{
    width: 100px;
    }}
   #status {{
    width: 100px;
   }}
   table {{
    width: 600px;
    background: white;
    color: black;
    border-spacing: 1px;
   }}
   td, th {{
    padding: 5px;
   }}
   th {{
       background: blue;
   }}
  </style>
 </head>
 <body>
  <table border="1">
   <tr>
    <th id="time">Время</th>
    <th>Задача</th>
    <th id="status" >Статус</th>
   </tr>
   {html_rows}
 </table>
 </body>
</html>
код:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import sqlite3
 
row = '''
<tr>
    <td>{task_time}</td>
    <td>{task}</td>
    <td>{status}</td>
</tr>
'''
 
html_rows = str()
 
conn = sqlite3.connect('sqldb.db')
cur = conn.cursor()
 
cur.execute('SELECT * from tasks;')
rows = cur.fetchall()
 
for task_time, task, status in rows:
    html_rows += row.format(task_time=task_time, task=task, status=status)
 
with open('template.html') as file_obj_in, open('result.html', 'w') as file_obj_out:
    file_obj_out.write(file_obj_in.read().format(html_rows=html_rows))
результат

HTML5
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8">
  <title>Календарь событий</title>
  <style>
   #time {
    width: 100px;
    }
   #status {
    width: 100px;
   }
   table {
    width: 600px;
    background: white;
    color: black;
    border-spacing: 1px;
   }
   td, th {
    padding: 5px;
   }
   th {
       background: blue;
   }
  </style>
 </head>
 <body>
  <table border="1">
   <tr>
    <th id="time">Время</th>
    <th>Задача</th>
    <th id="status" >Статус</th>
   </tr>
   
<tr>
    <td>08:00</td>
    <td>Сделать зарядку</td>
    <td>Выполнено</td>
</tr>
 
<tr>
    <td>09:00</td>
    <td>Умыться</td>
    <td>Выполнено</td>
</tr>
 
<tr>
    <td>10:00</td>
    <td>Позавтракать</td>
    <td>Выполнено</td>
</tr>
 
<tr>
    <td>11:00</td>
    <td>Ячейка 2</td>
    <td>Ячейка 3</td>
</tr>
 
<tr>
    <td>12:00</td>
    <td>Ячейка 2</td>
    <td>Ячейка 3</td>
</tr>
 
<tr>
    <td>13:00</td>
    <td>Ячейка 2</td>
    <td>Ячейка 3</td>
</tr>
 
<tr>
    <td>14:00</td>
    <td>Ячейка 2</td>
    <td>Ячейка 3</td>
</tr>
 
<tr>
    <td>15:00</td>
    <td>Ячейка 2</td>
    <td>Ячейка 3</td>
</tr>
 
<tr>
    <td>16:00</td>
    <td>Ячейка 2</td>
    <td>Ячейка 3</td>
</tr>
 
<tr>
    <td>17:00</td>
    <td>Ячейка 2</td>
    <td>Ячейка 3</td>
</tr>
 
<tr>
    <td>18:00</td>
    <td>Ячейка 2</td>
    <td>Ячейка 3</td>
</tr>
 
<tr>
    <td>19:00</td>
    <td>Ячейка 2</td>
    <td>Ячейка 3</td>
</tr>
 
<tr>
    <td>20:00</td>
    <td>Ячейка 2</td>
    <td>Ячейка 3</td>
</tr>
 
<tr>
    <td>21:00</td>
    <td>Ячейка 2</td>
    <td>Ячейка 3</td>
</tr>
 
<tr>
    <td>22:00</td>
    <td>Ячейка 2</td>
    <td>Ячейка 3</td>
</tr>
 
 </table>
 </body>
</html>


Добавлено через 1 минуту
PS
у Вас скобочка не закрыта



PPS
сделал с sqlite, думаю с mysql справитесь?
Спасибо! Но это не то что нужно, скрипт берет данные из БД и создает новый html файл result, записывая туда данные из БД, а нужно что бы данные в html были подставлены из БД, без создания новых файлов, т.е. просто открыл html страницу - увидел содержимое БД.

Я так понимаю в html в тегах <td> должны стоять переменные (ссылки: на записи в БД), типа того:
HTML5
1
2
<td>переменная a</td>
а=сходить в магазин
В самом html ни чего не редактируется, там только ссылки стоят, сделали изменение в бд-в html тоже поменялось
Вот как то так)
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5906 / 3358 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
29.11.2016, 10:33
Я Вас сразу спросил - нужно страницу или сервер, который эту страницу будет отдавать?
Так или иначе - если не хотите фреймворков - смотрите в сторону wsgi. Ну и web сервер нужен будет.
0
0 / 0 / 0
Регистрация: 06.01.2014
Сообщений: 79
29.11.2016, 10:49  [ТС]
Вот к примеру, как на php:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 <?php
include "config.php";
$ath = mysql_query("select * from authors;");
if($ath)
{
  $author = mysql_fetch_array($ath);
  echo "<br>имя = ".$author['name']."<br>";
  echo "пароль = ".$author['passw']."<br>";
  echo "e-mail = ".$author['email']."<br>";
  echo "url = ".$author['url']."<br>";
  echo "ICQ = ".$author['icq']."<br>";
  echo "about = ".$author['about']."<br>";
  echo "photo = ".$author['photo']."<br>";
  echo "time = ".$author['time'];
}
else
{
  echo "<p><b>Error: ".mysql_error()."</b></p>";
  exit();
}
?>
Т.е. стоят ссылки на ячейки в БД и мы видим их значение, ничего ни куда не записывается в новый файл

Добавлено через 9 минут
Цитата Сообщение от Jabbson Посмотреть сообщение
Я Вас сразу спросил - нужно страницу или сервер, который эту страницу будет отображать?
Так или иначе - если не хотите фреймворков - смотрите в сторону wsgi. Ну и web сервер нужен будет.
Запуска такого py-файла достаточно?
Python
1
2
3
4
from http.server import HTTPServer, CGIHTTPRequestHandler
server_address = ("", 8000)
httpd = HTTPServer(server_address, CGIHTTPRequestHandler)
httpd.serve_forever()
Апач тоже есть, можете показать код html страницы которая будет обращаться к БД и отображать данные из нее? (похоже на php что я писал выше)
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5906 / 3358 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
29.11.2016, 10:49
Лучший ответ Сообщение было отмечено IceTony как решение

Решение

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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
from http.server import BaseHTTPRequestHandler, HTTPServer
import sqlite3
 
 
html_text = '''<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8">
  <title>Календарь событий</title>
  <style>
   #time {{
    width: 100px;
    }}
   #status {{
    width: 100px;
   }}
   table {{
    width: 600px;
    background: white;
    color: black;
    border-spacing: 1px;
   }}
   td, th {{
    padding: 5px;
   }}
   th {{
       background: blue;
   }}
  </style>
 </head>
 <body>
  <table border="1">
   <tr>
    <th id="time">Время</th>
    <th>Задача</th>
    <th id="status" >Статус</th>
   </tr>
   {html_rows}
 </table>
 </body>
</html>'''
 
row = '''
<tr>
    <td>{task_time}</td>
    <td>{task}</td>
    <td>{status}</td>
</tr>
'''
 
 
class testHTTPServer_RequestHandler(BaseHTTPRequestHandler):
    def do_GET(self):
        self.send_response(200)
        self.send_header('Content-type', 'text/html')
        self.end_headers()
 
        conn = sqlite3.connect('sqldb.db')
        cur = conn.cursor()
 
        cur.execute('SELECT * FROM tasks;')
        rows = cur.fetchall()
 
        html_rows = str()
 
        for task_time, task, status in rows:
            html_rows += row.format(task_time=task_time, task=task, status=status)
 
        self.wfile.write(bytes(html_text.format(html_rows=html_rows), "utf8"))
        return
 
 
def run():
    print('starting server...')
    server_address = ('127.0.0.1', 8081)
    httpd = HTTPServer(server_address, testHTTPServer_RequestHandler)
    print('running server...')
    httpd.serve_forever()
 
run()
http://127.0.0.1:8081
1
0 / 0 / 0
Регистрация: 06.01.2014
Сообщений: 79
29.11.2016, 13:37  [ТС]
Цитата Сообщение от Jabbson Посмотреть сообщение
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
from http.server import BaseHTTPRequestHandler, HTTPServer
import sqlite3
 
 
html_text = '''<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8">
  <title>Календарь событий</title>
  <style>
   #time {{
    width: 100px;
    }}
   #status {{
    width: 100px;
   }}
   table {{
    width: 600px;
    background: white;
    color: black;
    border-spacing: 1px;
   }}
   td, th {{
    padding: 5px;
   }}
   th {{
       background: blue;
   }}
  </style>
 </head>
 <body>
  <table border="1">
   <tr>
    <th id="time">Время</th>
    <th>Задача</th>
    <th id="status" >Статус</th>
   </tr>
   {html_rows}
 </table>
 </body>
</html>'''
 
row = '''
<tr>
    <td>{task_time}</td>
    <td>{task}</td>
    <td>{status}</td>
</tr>
'''
 
 
class testHTTPServer_RequestHandler(BaseHTTPRequestHandler):
    def do_GET(self):
        self.send_response(200)
        self.send_header('Content-type', 'text/html')
        self.end_headers()
 
        conn = sqlite3.connect('sqldb.db')
        cur = conn.cursor()
 
        cur.execute('SELECT * FROM tasks;')
        rows = cur.fetchall()
 
        html_rows = str()
 
        for task_time, task, status in rows:
            html_rows += row.format(task_time=task_time, task=task, status=status)
 
        self.wfile.write(bytes(html_text.format(html_rows=html_rows), "utf8"))
        return
 
 
def run():
    print('starting server...')
    server_address = ('127.0.0.1', 8081)
    httpd = HTTPServer(server_address, testHTTPServer_RequestHandler)
    print('running server...')
    httpd.serve_forever()
 
run()
http://127.0.0.1:8081
Класс! То что нужно! Большое спасибо!

Добавлено через 19 минут
А можно ли реализовать еще такой момент:
при нажатии в календаре на конкретную задачу появляется форма для ее редактирования (что бы можно было менять статус и исполнителя данной задачи)?

Немного подредактировал код:
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
from http.server import BaseHTTPRequestHandler, HTTPServer
import sqlite3
 
 
html_text = '''<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8">
  <title>Календарь событий</title>
  <style>
   #time {{
    width: 80px;
    }}
   #task {{
   width: 160px;
   }}
   #status {{
    width: 100px;
   }}
   #executor {{
    width: 50px;
   }}
   table {{
    background: white;
    color: black;
    border-spacing: 0px;
   }}
   td, th {{
    padding: 5px;
   }}
   th {{
       background: #00BFFF;
   }}
  </style>
 </head>
 <body>
  <table border="1">
   <tr>
    <th id="time">Время</th>
    <th id="task">Задача</th>
    <th id="status" >Статус</th>
    <th id="executor">Исполнитель</th>
   </tr>
   {html_rows}
 </table>
 </body>
</html>'''
 
row = '''
<tr>
    <td>{task_time}</td>
    <td>{task}</td>
    <td>{status}</td>
    <td>{executor}</td>
</tr>
'''
 
 
class testHTTPServer_RequestHandler(BaseHTTPRequestHandler):
    def do_GET(self):
        self.send_response(200)
        self.send_header('Content-type', 'text/html')
        self.end_headers()
 
        conn = sqlite3.connect('db.db')
        cur = conn.cursor()
 
        cur.execute('SELECT * FROM tasks;')
        rows = cur.fetchall()
 
        html_rows = str()
 
        for task_time, task, status,executor in rows:
            html_rows += row.format(task_time=task_time, task=task, status=status, executor=executor)
 
        self.wfile.write(bytes(html_text.format(html_rows=html_rows), "utf8"))
        return
 
 
def run():
    print('starting server...')
    server_address = ('127.0.0.1', 8081)
    httpd = HTTPServer(server_address, testHTTPServer_RequestHandler)
    print('running server...')
    httpd.serve_forever()
 
run()
SQL
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
--
-- Файл сгенерирован с помощью SQLiteStudio v3.1.1 в Вт ноя 29 14:36:57 2016
--
-- Использованная кодировка текста: System
--
PRAGMA foreign_keys = off;
BEGIN TRANSACTION;
 
-- Таблица: executors
CREATE TABLE executors (executor STRING PRIMARY KEY);
INSERT INTO executors (executor) VALUES ('Папа');
INSERT INTO executors (executor) VALUES ('Мама');
INSERT INTO executors (executor) VALUES ('Сын');
INSERT INTO executors (executor) VALUES ('Дочь');
 
-- Таблица: statuss
CREATE TABLE statuss (STATUS STRING PRIMARY KEY);
INSERT INTO statuss (STATUS) VALUES ('Не выполнено');
INSERT INTO statuss (STATUS) VALUES ('Выполнено');
 
-- Таблица: tasks
CREATE TABLE tasks (task_time DATETIME PRIMARY KEY, task STRING, STATUS STRING REFERENCES statuss (STATUS), executor STRING REFERENCES executors (executor));
INSERT INTO tasks (task_time, task, STATUS, executor) VALUES ('2016-11-28 14:00:00', 'Сходить в магазин', 'Выполнено', 'Мама');
INSERT INTO tasks (task_time, task, STATUS, executor) VALUES ('2016-11-28 17:00:00', 'Помыть машину', 'Выполнено', 'Папа');
INSERT INTO tasks (task_time, task, STATUS, executor) VALUES ('2016-11-29 08:30:00', 'Сделать зарядку', 'Выполнено', 'Папа');
INSERT INTO tasks (task_time, task, STATUS, executor) VALUES ('2016-11-29 10:00:00', 'Отвести сына в школу', 'Выполнено', 'Мама');
INSERT INTO tasks (task_time, task, STATUS, executor) VALUES ('2016-11-30 19:00:00', 'Поиграть в игру', 'Не выполнено', 'Сын');
INSERT INTO tasks (task_time, task, STATUS, executor) VALUES ('2016-11-30 20:00:00', 'Почитать книгу', 'Не выполнено', 'Дочь');
INSERT INTO tasks (task_time, task, STATUS, executor) VALUES ('2016-12-01 07:00:00', 'Поехать на рыбалку', 'Не выполнено', 'Папа');
INSERT INTO tasks (task_time, task, STATUS, executor) VALUES ('2016-12-01 13:00:00', 'Сделать маникюр', 'Не выполнено', 'Мама');
INSERT INTO tasks (task_time, task, STATUS, executor) VALUES ('2016-12-02 17:00:00', 'Сделать уроки', 'Не выполнено', 'Сын');
INSERT INTO tasks (task_time, task, STATUS, executor) VALUES ('2016-12-02 18:00:00', 'Посетить кружок танцев', 'Не выполнено', 'Дочь');
 
COMMIT TRANSACTION;
PRAGMA foreign_keys = ON;
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5906 / 3358 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
29.11.2016, 17:45
Цитата Сообщение от IceTony Посмотреть сообщение
А можно ли реализовать еще такой момент:
можно
0
0 / 0 / 0
Регистрация: 06.01.2014
Сообщений: 79
29.11.2016, 18:32  [ТС]
Цитата Сообщение от Jabbson Посмотреть сообщение
можно
В какую сторону смотреть?
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5906 / 3358 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
29.11.2016, 18:33
Делайте линки, например используя id, проверяйте self.path, чтобы обработать запросы к деталям записи, дальше показывайте еще одну страничку с формой и обрабатывайте post.
0
0 / 0 / 0
Регистрация: 06.01.2014
Сообщений: 79
29.11.2016, 20:37  [ТС]
Цитата Сообщение от Jabbson Посмотреть сообщение
Делайте линки, например используя id, проверяйте self.path, чтобы обработать запросы к деталям записи, дальше показывайте еще одну страничку с формой и обрабатывайте post.
id Вы имеете в виду добавить столбец в таблицу tasks?
Про self.path где почитать можно? Что то ничего толкового не нашел(
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5906 / 3358 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
29.11.2016, 20:39
Цитата Сообщение от IceTony Посмотреть сообщение
id Вы имеете в виду добавить столбец в таблицу tasks?
если таковой не создается автоматически
Цитата Сообщение от IceTony Посмотреть сообщение
Про self.path где почитать можно? Что то ничего толкового не нашел(
https://docs.python.org/3/libr... ndler.path
0
0 / 0 / 0
Регистрация: 06.01.2014
Сообщений: 79
29.11.2016, 23:43  [ТС]
Цитата Сообщение от Jabbson Посмотреть сообщение
если таковой не создается автоматически
https://docs.python.org/3/libr... ndler.path
Добавил новый столбец id в таблицу tasks
Ссылки на все задачи поставил таким образом:
Python
1
2
3
4
5
6
7
<tr>
    <td><a href="">{id}</a></td>
    <td>{task_time}</td>
    <td>{task}</td>
    <td>{status}</td>
    <td>{executor}</td>
</tr>
Только не понятно куда эта ссылка вести должна, вы сказали еще одну страничку, но тут питон вроде только единственную страницу генерирует, по адресу 127.0.0.1:8081

Форму редактирования БД примерно так вижу:
Python
1
2
3
4
5
6
7
8
9
10
<form name="editor" method="post" action="обращение к таблице tasks, к записи с id=n">
    <td>{id}</td>
    <td>{task_time}</td>
    <td>{task}</td>
    <select>
       <option>{status}</option>
       <option>{executor}</option>
    </select>
    <p><input type="submit" value="Сохранить"></p>
 </form>
Знаю, что ахинею написал, сильно не пинайте)
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5906 / 3358 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
29.11.2016, 23:49
Цитата Сообщение от IceTony Посмотреть сообщение
Добавил новый столбец id в таблицу tasks
в таблицу странички или в таблицу базу?

Цитата Сообщение от IceTony Посмотреть сообщение
Ссылки на все задачи поставил таким образом:
выводить id действительно необходимо?

Цитата Сообщение от IceTony Посмотреть сообщение
Только не понятно куда эта ссылка вести должна, вы сказали еще одну страничку, но тут питон вроде только единственную страницу генерирует, по адресу 127.0.0.1:8081
вести должна на что-то типа 127.0.0.1:8081/task/1. Ловите это через self.path, как я уже говорил и возвращайте свою форму (заполняйте так же, как и для первого запроса)

по сабмиту формы - обрабатывайте post
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.11.2016, 23:49
Помогаю со студенческими работами здесь

Календарь событий
Здравствуйте! Собрался написать календарь событий, но все оказалось не так просто как предрологал. Обычный календарь на php получился...

Календарь событий
Требуется создать Календарь событий для сайта. Использую движок InstantCMS. Требуемые функции: 1. Календарь, показывающий текущий...

Календарь событий
Как создать на PascalABC.NET календарь событий (списки,загружаемые из текстовых файлов в окно программы)с применением Main.Form?:)

Календарь событий
Не выводит данные из БД, хотя сделал все по статье. Выводит такую ошибку.

Календарь событий
Здравствуйте, уважаемые форумчане!:) Подскажите, пожалуйста, как можно реализовать на сайте календарь событий (нужно небольшой...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru