2017-01-27 2 views
-1

Позвольте мне попробовать это снова. Я хочу, чтобы ввести переменную в моей HTML форме представить, до сих пор от чтения этой ссылке How to display a variable in HTML Я попытался следующий код, который находится внутри main.htmlПередача переменной из HTML в Python/Flask

<form> Asset Tag:<br> <input type="text" name="Asset Tag"><br> <input type="submit" value="Submit"> <form action="{{ asset_tag }}" method="get"> </form>

Я тогда питон скрипт, который идет как это,

from flask import Flask, render_template 
app = Flask('server') 

@app.route('/py') 
def server(): 
    return render_template('main.html') 
#API URL 
JSS_API = 'https://apiresource.com' 

#Pre-Defined username and password 
username = 'username' 
password = 'password' 

#Ask User for the Asset tag 
asset_tag = {{ }} 

После того, как метка актива вводится он просто ищет через JSON-файл для матча, остальное не так важно, так что я не включил следующую часть сценария.

Так что Flask делает мой HTML просто прекрасным, и я могу представить значение, но оно не передается обратно скрипту, что имеет смысл, поскольку я делаю противоположное ссылку, которую я предоставлял, но я просто не могу подумайте, как это делается. Какие-либо предложения?

ответ

3

У вас есть несколько вопросов, которые я изложил ниже. В целом, однако, интерфейс - это, передающий переменную на бэкэнд, просто переменные доступны только через объект request от в пути, по которому передаются данные..

  • Я не знаю, почему у вас есть <form> вложенной в <form> здесь, но вы хотите, чтобы удалить внутреннюю один, так как он ничего не делает.

  • Вы хотите настроить свою форму для отправки данных на ваш сервер при отправке. Если вы не укажете action, тогда он отправит POST на ту же страницу на ту же страницу, что и в настоящее время.

    <form method="POST"> 
        Asset Tag:<br> 
        <input type="text" name="tag"><br> 
        <input type="submit" value="Submit"> 
    </form> 
    
  • Вам нужно настроить свой маршрут, чтобы принять запрос POST, так что он может принимать данные из формы на вашей странице. Дополнительную информацию о методах HTTP см. В разделе here.

    @app.route('/py', methods=['GET', 'POST']) 
    
  • Внутри вашего маршрута, вы хотите, чтобы проверить, был ли это запрос GET (и загрузите обычную страницу) или было ли это POST (данные формы были отправлены, поэтому мы должны использовать его)

    from flask import request 
    
    @app.route('/py', methods=['GET', 'POST']) 
    def server(): 
        if request.method == 'POST': 
         # Then get the data from the form 
         tag = request.form['tag'] 
    
         # Get the username/password associated with this tag 
         user, password = tag_lookup(tag) 
    
         # Generate just a boring response 
         return 'The credentials for %s are %s and %s' % (tag, user, password) 
         # Or you could have a custom template for displaying the info 
         # return render_template('asset_information.html', 
         #      username=user, 
         #      password=password) 
    
        # Otherwise this was a normal GET request 
        else: 
         return render_template('main.html') 
    
+1

я принял ответ, потому что это имеет смысл для меня логически. Я понимаю, что на практике я не совсем готов к этому. Вид прыгнул в глубокий конец, не научившись плавать первым. Благодаря! – MingyJ

Смежные вопросы