【问题标题】:Flask user input to run a python script烧瓶用户输入以运行 python 脚本
【发布时间】:2018-09-05 10:51:59
【问题描述】:

我试图从用户输入构建一个 URL。 所以网址总是一样的:

www.example.com/

并且来自用户的输入会将 url 构建成类似:

www.example.com/USERINPUT-1.jpg

我需要像这样构建它们:从 index.html 到 /generate root。 我想不通……我到处搬椅子,没有运气

这是我的 run.py

from flask import Flask, jsonify, render_template, request
app = Flask(__name__)

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

@app.route('/generate', methods=['GET'])
def generate():
    prefix = request.args.get('prefix')
    urls = []
    for number in range(1, 7):
        urls.append('https://example.com/{p}-{n}.jpg'.format(p=prefix, n=number))
    return jsonify(result=urls)

这是我的 index.html:

<!doctype html>
<html lang="en">
<html>
<head>
   <title>Image Grabber v1.0</title>
</head>
<body>
<center>
<script type=text/javascript>
  $SCRIPT_ROOT = {{ request.script_root|tojson|safe }};
  $( document ).ready(function() {
    $('#download').bind('click', function() {
      $.getJSON($SCRIPT_ROOT + '/generate', {
        prefix: $('input[name="prefix"]').val()
      }, function(data) {
        $("#result").text(data.result);
      });
      return false;
    });
  });
</script><br>
 <h2>Image Grabber v1.0</h2>
<p><input type=text size=45 name=prefix>
   <span id=result></span>
<p><button type="submit" id=download>Download</button></p>
</center>
</body>
</html>

@Jatimir 帮助我解决了我的问题......并且我能够让它工作。问题解决了。

【问题讨论】:

  • 您了解Web 应用程序只能访问服务器的文件系统,而不能访问客户端的文件系统吗? (当然,除非服务器和客户端在同一台计算机上运行)。
  • @brunodesthuilliers - emmmm,不是真的,你是什么意思?
  • 我的意思是,除非您的每个用户都在自己的计算机上运行整个烧瓶应用程序(服务器进程),否则您的烧瓶应用程序无法在他们的计算机上写入下载的文件 - 服务器只能访问它是自己的文件系统。
  • 当然,除非您随后显示一个页面,其中包含您的应用检索到的文件的下载链接,并让用户手动下载它们,或者类似的东西(例如,您可以将文件压缩到单个存档中),但这仍然需要两次下载:烧瓶应用程序从网球仓库下载文件并将它们存储在服务器的文件系统中,然后用户从烧瓶应用程序下载文件。
  • @brunodesthuilliers 哦,哇……我有点想象这是一件简单的事情……结果……这不是……嗯……所以它更像是 Flask 的东西或 python 的东西比 ?我如何与我的同事分享我的脚本......而不在每台电脑上安装 python 等等? ~现在很困惑...

标签: python file flask input request


【解决方案1】:

我解决了我的问题,这里是解决方案:从用户输入构建一个 url。很抱歉让它如此混乱!

from flask import Flask, jsonify, render_template, request
app = Flask(__name__)

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

@app.route('/generate', methods=['GET'])
def generate():
    prefix = request.args.get('prefix')
    urls = []
    for number in range(1, 7):
        urls.append('https://example.com/{p}-{n}.jpg'.format(p=prefix, n=number))
    return jsonify(result=urls)

HTML 文件:

<!doctype html>
<html lang="en">
<html>
<head>
   <title>Image Grabber v1.0</title>
</head>
<body>
<center>
<script type=text/javascript>
  $SCRIPT_ROOT = {{ request.script_root|tojson|safe }};
  $( document ).ready(function() {
    $('#download').bind('click', function() {
      $.getJSON($SCRIPT_ROOT + '/generate', {
        prefix: $('input[name="prefix"]').val()
      }, function(data) {
        $("#result").text(data.result);
      });
      return false;
    });
  });
</script><br>
 <h2>Image Grabber v1.0</h2>
<p><input type=text size=45 name=prefix>
   <span id=result></span>
<p><button type="submit" id=download>Download</button></p>
</center>
</body>
</html>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-12
    相关资源
    最近更新 更多