#python #html #flask
Вопрос:
Я пытаюсь получить пользовательский ввод из html-файла и передать его в функцию, которая находится в другом файле python в том же каталоге.
Пользователь должен ввести свое имя пользователя и пароль на веб-страницу html, и входные данные будут переданы в другой файл python для выполнения многочисленных функций проверки.
Мы были бы очень признательны за некоторую помощь или рекомендации 🙂
Спасибо
form.html файл
<form action="{{ url_for("gfg")}}" method="post">
<label for="username">username:</label>
<input type="text" id="username" name="username" placeholder="username">
<label for="password">password:</label>
<input type="text" id="password" name="password" placeholder="password">
<button type="submit">Login</button>
app.py файл
# importing Flask and other modules
from flask import Flask, request, render_template
# Flask constructor
app = Flask(__name__)
# A decorator used to tell the application
# which URL is associated function
@app.route('/', methods=["GET", "POST"])
def gfg():
if request.method == "POST":
# getting input with name = fname in HTML form
username = request.form.get("username")
# getting input with name = lname in HTML form
password = request.form.get("password")
return username password
return render_template("form.html")
if __name__ == '__main__':
app.run()
основной файл python (где расположены функции)
def main():
username = app.gfg()[0]
password = app.gfg()[1]
TestLogin(username, password)
if __name__ == "__main__":
main()
Комментарии:
1. Пожалуйста, вставьте сюда полную ошибку отслеживания. и не публикуйте изображения.
Ответ №1:
Вам нужно использовать контекст запроса.
Ошибка времени выполнения: Работа вне контекста запроса.
Обычно это означает, что вы пытались использовать функции, для которых требовался активный HTTP-запрос. Обратитесь к документации по тестированию для получения информации о том, как избежать этой проблемы.
[...]
with app.test_request_context(
'/url/', data={'format': 'short'}):
username = app.gfg()[0]
password = app.gfg()[1]
TestLogin(username, password)
[...]
Вы можете ознакомиться с документами
Комментарии:
1. так нужно ли мне сделать имя пользователя и пароль глобальной переменной?
2. Я не думаю, что есть необходимость делать имя пользователя и пароль глобальными. но если вы хотите получить к ним глобальный доступ, вы можете использовать сеансы. в функции gfg вы можете использовать
session["user"] = username
иsession["pass"] = password
. Теперь вы можете получить доступ к переменным с помощьюsession["user"]
иsession["pass"]
3. из колбы приложение импорт, запрос, render_template, колбы, сессии от проверки.проверка импорт TestPrerequisite приложение = колба( имя ) приложение.файл config[‘SECRET_KEY’] = ‘kjshkjdhjs hjshjhdjah’ @приложение.маршрут(‘/’, методы=[‘get’ в, ‘сообщение’]) логин четкости(): если request.способ == ‘пост’: сессия[«MSISDN абонента»] = просьбе.форма.вам(‘номер MSISDN’) сессии[«пароль»] = просьбе.форма.вам(‘пароль’) возвращение render_template(«form.html») testLogin(сеанс[«MSISDN»], сеанс[«пароль»])
4. сессия не работает внутри
app.app_context()
, как я вижу. вы можете использовать их снаружи с блоком. определите их оба как переменные,username = session["user"] password = session["pass"]
. затем в блоке с использованиемTestLogin(username, password)
.