Nano Hash - криптовалюты, майнинг, программирование

Веб-интерфейс для функции Python

У меня есть функция python, которая принимает ряд целых чисел в качестве входных данных и возвращает другую серию целых чисел. Я хотел бы распространять функцию в виде веб-приложения.

Целевая страница должна состоять из веб-формы с рядом целочисленных полей (с проверкой ввода), раскрывающихся полей и кнопки отправки. Кнопка отправки запускает указанную функцию Python и возвращает результаты, которые должны быть отображены в таблице html.

Я полный новичок в веб-разработке, но после некоторых исследований выяснилось, что flask — наиболее подходящий для меня фреймворк для выполнения вышеуказанной задачи. Моя проблема в том, что документация, с которой я столкнулся до сих пор, касается в основном разработки блогов и, следовательно, не особенно актуальна для того типа приложений, которые мне нужны.

Поэтому я ищу любые указатели (примеры кода, книги, статьи) или рекомендации, которые помогут мне приступить к моей задаче. В простейшей форме я ищу:

  • веб-форма, которая принимает одно целое число (1-10) и второе целое число (1-5) из выпадающего списка
  • веб-форма возвращает ошибку, если пользователь вводит недопустимое целое число (‹1, >10)
  • на кнопке отправки функция python вычисляет сумму двух целых чисел
  • результат представлен в веб-форме

Все рекомендации приветствуются.

27.12.2014

Ответы:


1

Ну, на самом деле это довольно просто, все дело в том, как вы представляете форму в шаблоне html, получаете представление для получения данных формы и передаете контекст обратно в шаблон.

Я быстро смоделировал пример того, что вы хотите (ничего особенного, просто вернемся к основам и покажем вам, как они работают вместе), это всего несколько строк кода в 2 файлах main.py ( основной файл, такой как логика представления) и шаблон calculation.html:

main.py

from flask import Flask
from flask import render_template
from flask import request

app = Flask(__name__)

@app.route("/", methods=['GET', 'POST'])
def calculation():
    result = 0
    error = ''
    # you may want to customize your GET... in this case not applicable
    if request.method=='POST':
        # get the form data
        first = request.form['first']
        second = request.form['second']
        if first and second:
            try:
                # do your validation or logic here...
                if int(first)>10 or int(first)<1:
                    raise ValueError
                result = int(first) + int(second)
            except ValueError:
                # you may pass custom error message as you like
                error = 'Please input integer from 1-10 only.'
    # you render the template and pass the context result & error
    return render_template('calculation.html', result=result, error=error)

if __name__ == "__main__":
    app.run()

templates/calculation.html

<h1>Calculation</h1>
<form method="POST">
    <input type="text" name="first" value="">
    <select name="second">
        <option value="1" selected>1</option>
        <option value="2">2</option>
        <option value="3">3</option>
        <option value="4">4</option>
        <option value="5">5</option>
    </select> 
    <input type="submit" value="Submit">
    {% if result %}
    <p>
        <label name='result'>Answer is: {{ result }}</label>
    </p>
    {% endif %}
    {% if error %}
    <p>
    <label name="error">{{ error }}</label>
    </p>
    {% endif %}
</form>

Надеюсь, они не требуют пояснений, и вы сможете понять, как работать с основами Flask, формами и т. д.

Прочтите Flask Doc и попытайтесь следовать ему, на самом деле они довольно просты и однажды вы освоите основную тему, вы можете начать искать промежуточную и продвинутую тему.

К вашему сведению, для WTForms существует расширение под названием Flask-WTF, это очень удобно при работе с формами, хотя ничто не мешает вам просто делать все в простой html-форме, как в приведенном выше коде.

Надеюсь, это поможет, и я желаю, чтобы вам понравились простота и гибкость Flask.

27.12.2014
  • Фантастический! Как раз то, что мне было нужно! Рад, что это было так просто, как я надеялся, что это будет! 29.12.2014
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..