Как создать сайт на python без использования фреймворков?
Как создать сайт на python без использования фреймворков?
Просто в общем скажите, что нужно сделать. Детали я сам погуглю
P.S. Я знаю, что это создание велосипедов, но это мне нужно для изучения работы веб приложений в частности и обучения программированию в общем
Ответы (3 шт):
Если прям без фреймворка, то cgi. Но... зачем? Есть же фреймворки.
Flask
Flask — фреймворк для создания веб-приложений на языке программирования Python, использующий набор инструментов Werkzeug, а также шаблонизатор Jinja2. Относится к категории так называемых микрофреймворков[en] — минималистичных каркасов веб-приложений, сознательно предоставляющих лишь самые базовые возможности.
Django
Django (Джанго, ['dʒæŋɡoʊ][6]) — свободный фреймворк для веб-приложений на языке Python, использующий шаблон проектирования MVC[7]. Проект поддерживается организацией Django Software Foundation.
В стандартной библиотеке Python есть модуль http.server. Это HTTP-сервер, на основе которого можно создавать сайты любой сложности. Конечно, чем больше сложность, тем больше вам придётся написать функциональности, которая уже есть во фреймворках. Но если вам нужен сервер для отладки или вы хотите понять как что устроено, то начните с него.
Отличный вопрос - зря минусим.
В каталоге проекта
создай папку ./cgi-bin
напиши файлик ./cgi-bin/index.py с содержимым
#!/bin/python3
print("Content-Type: text/html") # Хидеры ответа
print() # Пустая строка сразу после хидеров
# А потом текст ответа
print("<TITLE>CGI script output</TITLE>")
print("<H1>This is my first CGI script</H1>")
print("Hello, world!")
Сделай скрипт исполнимым
chmod +x ./cgi-bin/index.py
И запукай http сервер
python3 -m http.server --cgi 8000
Переходи по ссылке http://localhost:8000/cgi-bin/index.py и вот Hello-Word на чистом питоне готов.
Вариант чуть посложнее с одним модулем
import http.server
class Handler(http.server.BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(200, 'OK')
self.send_header('Content-Type', 'text/html')
self.end_headers()
self.wfile.write('''
<TITLE>Handler script output</TITLE>
<H1>This is my first Handler script</H1>
Hello, world!
'''.encode())
httpd = http.server.HTTPServer(('', 8000), Handler)
httpd.serve_forever()
Тут нет обработчика URI и один ответ будет на всех страницах.