@HusniddinEshmuhammatov

Как переписать скрипт на питоне?

Всем привет, как переписать код на Flask Python 2.7 на SimpleHttServer? дело в том, что нужны возможности питона 3, а фласк с 3 питоном я установить не могу из-за проблем с ос, из-за чего было бы проще переписать на простой сервер с поддержкой питон 3. Вот исходный код
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from flask import Flask, render_template, request

app = Flask(__name__)
app.config.from_object(__name__)


@app.route('/')
def welcome():
    return render_template('form.html')


@app.route('/result', methods=['POST'])
def result():
    var_1 = request.form.get("var_1", type=int)
    var_2 = request.form.get("var_2", type=int)
    operation = request.form.get("operation")
    operation2 = request.form.get("operation2")
    operation3 = request.form.get("operation3")
    if(operation == u'Q (теплота в Дж)' and operation2 == u"q (Электрический заряд в Кл)" and operation3 == u"C (емкость в фарад)"):
        result = var_1**2 / 2*var_2
else:
        result = 'INVALID CHOICE'
    entry = result
    return render_template('result.html', entry=entry)

if __name__ == '__main__':
    app.run(debug=True)


вот пример простого сервера под который нужно переписать
from http.server import HTTPServer, BaseHTTPRequestHandler


class Serv(BaseHTTPRequestHandler):

    def do_GET(self):
        if self.path == '/':
            self.path = '/index.html'
        try:
            file_to_open = open(self.path[1:]).read()
            self.send_response(200)
        except:
            file_to_open = "File not found"
            self.send_response(404)
        self.end_headers()
        self.wfile.write(bytes(file_to_open, 'utf-8'))


httpd = HTTPServer(('localhost', 8080), Serv)
httpd.serve_forever()
  • Вопрос задан
  • 484 просмотра
Пригласить эксперта
Ответы на вопрос 2
SubGANs
@SubGANs
Вот примерный код на коленке, выводит сумму двух чисел, но может в любой момент сломаться:
Опа
#!/usr/bin/env python3
from http.server import BaseHTTPRequestHandler, HTTPServer
import re


class MyHandler(BaseHTTPRequestHandler):
    def _set_response(self):
        self.send_response(200)
        self.send_header('Content-type', 'text/html')
        self.end_headers()

    def do_GET(self):
        self._set_response()
        self.wfile.write(bytes("""
        <form action="/" method="post">
          Val1:<br>
          <input type="text" name="val1" value="1">
          <br>
          Val2:<br>
          <input type="text" name="val2" value="2">
          <br><br>
          <input type="submit" value="Submit">
        </form>
        """, "utf-8"))

    def do_POST(self):
        content_length = int(self.headers['Content-Length'])
        post_data = self.rfile.read(content_length)
        post_data = re.split("&", post_data.decode("utf-8"))
        val1 = int(re.split("=", post_data[0])[1])
        val2 = int(re.split("=", post_data[1])[1])
        self._set_response()
        self.wfile.write(bytes("%s" % (val1 + val2), "utf-8"))


def run(server_class=HTTPServer, handler_class=MyHandler, port=8080):
    server_address = ('', port)
    httpd = server_class(server_address, handler_class)
    print('Starting httpd...')
    httpd.serve_forever()


if __name__ == "__main__":
    run()



Мне кажется проще починить сервер, либо завести окружение и там поставить нужный пакет, если какие-то проблемы с зависимостями и т.д. Ну или использовать что-нибудь другое, если фласк не заводится, что очень странно, к примеру торнадо
Ответ написан
Комментировать
@damprog
если "проще переписать ", то к чему вопрос как? )) это же просто, сделайте.

А вообще, советую засунуть всё это дело в Docker.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы