首页 > 解决方案 > 从本地主机移植我的烧瓶应用程序时无法弄清楚它有什么问题

问题描述

概述

嗨,我有一个 Flask 应用程序,可以在我的本地主机上运行,​​但不能在 pythonanywhere 上运行。我的应用程序基本上执行以下操作:

  1. 用户填写 HTML 表单,点击提交
  2. HTML 形式的脚本使用 jQuery $ajax 在 sumbit 上发布到我的烧瓶应用程序
  3. Flask 应用程序处理数据并将其发送回以显示为 HTML

以下是我认为将我的应用程序移动到 pythonanywhere 时可能出现的一些问题:

  1. urllib.requests 可能不包含在 pythonanaywhere 中,我知道包含 urllib 但我不确定 urllib.requests 是否不同或只是 urllib 的一部分
  2. 在我的本地主机上,我的 $ajax 网址是“http://127.0.0.1:5000/ebaycode/”,经过数小时的查找,我找不到任何关于您应该将其更改为的信息,所以我尝试了“http:// mander39.pythonanywhere.com/ebaycode/' 这可能是错误的
  3. 我不知道@app.route 做了什么,也许这在移动到 pythonanywhere 时搞砸了

代码

<script>
        $('#form').on('submit', function(e){
            #random css changes with jQuery i.e. $('.box').css( "display","none")
            #conditionals based on form data i.e. if ($('.checkbox').is(":checked"))
            e.preventDefault();
            $.ajax({
                url: 'http://mander39.pythonanywhere.com/ebaycode/',
                data: {'product': product, 'sold': sold, 'cond': cond},
                method: 'POST',
                success: function(data) {
                    #using $('#id').html to show my data output on my site
                }
            });
        });
</script>

烧瓶应用

from flask import Flask, render_template, request, jsonify
from bs4 import BeautifulSoup
from urllib.request import urlopen
import re
from statistics import mean 
import numpy as np

app = Flask(__name__)

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

@app.route('/ebaycode/', methods=['POST'])
def ebaycode():
    prod = str(request.form.get('product', 0))
    sold = str(request.form.get('sold', 0))
    cond = str(request.form.get('cond', 0))
    #whole bunch of other code 
    data = {'ebaycode': ebaycode,'lengthOne': lengthOne,'maxOne': maxOne,
            'minOne': minOne,'avgOne': avgOne,'medOne': medOne, 'lengthTwo': lengthTwo,
            'maxTwo':maxTwo, 'minTwo':minTwo,'avgTwo': avgTwo,'medTwo': medTwo, 'url': tac
            }
    data = jsonify(data)
    return data

def reject_outliers(data, m = 3.):
    #method called in ebaycode()


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

我希望我有一个命令提示符来显示我的应用程序正在做什么,但是来自 pythonanywhere 的 bash 和 python cmd 不显示任何内容。非常感谢您的帮助,我真的需要它。

标签: pythonjqueryajaxflaskpythonanywhere

解决方案


推荐阅读