предисловие
Сегодня мы займемся веб-разработкой на Python и создадим простой веб-сайт [Стена исповеди]. Как мы все знаем, функция стены исповеди, как правило, больше связана с публикацией, чтобы найти кого-то, потерянного и найденного, или с платформой, где каждый может публично признаться со своими любимыми людьми.
Краткое введение в фреймворк Tornado
В Python есть три основных фреймворка WEB-разработки, и сегодня в основном используется фреймворк Tornado (хотя этот фреймворк — легковесный фреймворк, которым мало кто пользуется)
Установите код модуля фреймворка Tornado
pip install tornado
- Джанго
- Колба
- Торнадо
Преимущества фреймворка Tornado
- Микрофреймворк, высокая производительность
- Асинхронная поддержка
Недостатки Tornado Framework
- Меньше колес, в отличие от Django и других фреймворков, поддерживающих большое количество плагинов.
- Отсутствие лучшего реального боя, компания мало использует, а учебных материалов мало.
Сценарии использования фреймворка Tornado
- Создавайте микросервисы
Композиция кадра
Сначала попробуйте Торнадо
Сначала импортируйте модули, которые будут использоваться на этот раз.
import time
from tornado import web, ioloop, httpserver
Посмотреть
class MainPageHandler(web.RequestHandler):
def get(self, *args, **kwargs): # 对应get请求
self.wrilt('hello tornado')
установить маршрут
app = web.Application(
[
(r"/", MainPageHandler),
]
)
"/" означает посещение домашней страницы, например, локальное доменное имя 127.0.0.1:8000/, что означает посещение этого веб-сайта, вы посетите домашнюю страницу
Установите интерфейсный сокет, вызовите
if __name__ == "__main__":
# 前端socket
http_server = httpserver.HTTPServer(app)
http_server.listen(8000)
ioloop.IOLoop.current().start()
Запустите программу и сначала протестируйте воду
Когда Tornado запускается, он не предложит вам запустить его, как Django и Flask.
Установите домашнюю страницу, вызовите шаблон файла внешнего интерфейса
# 首页
class MainPageHandler(web.RequestHandler):
def get(self, *args, **kwargs):
self.render('index.html', name='表白墙', messages=MESSAGES)
На этот раз фронтальный файл вызывается напрямую, а материалов на этом сайте еще много.
Сайт: https://www.17sucai.com/
настраивать
settings = {
'template_path': 'templates', # 设置模板文件路径
'static_path': 'statics' # 静态文件路径
}
вид на стену исповеди
class WishHandler(web.RequestHandler):
def get(self, *args, **kwargs): # 对应get请求
self.render('wish.html',name='表白墙')
def post(self, *args, **kwargs):
# 获取前端传递数据
content = self.get_argument('content', default=None)
name = self.get_argument('name', default='匿名')
if content:
# 添加数据
MESSAGES.append({
'name': name,
'content': content,
'id': len(MESSAGES) + 1,
'num': len(MESSAGES) + 1,
'time': time.strftime('%Y-%m-%d %H:%M:%S')
})
# 跳转
self.redirect('/')
else:
self.write('内容不能为空')
сообщение
# 留言保存在全局变量中
MESSAGES = [
{
'id': 1, 'name': '学员', 'time': '2022-02-10 21:16:00', 'content': '真帅', 'num': 1}
]