在Flask路由上收到未找到的错误?

时间:2019-03-20 19:26:27

标签: python angularjs flask

我尝试了一切,但路线似乎不起作用。我是flask的新手,正在本地运行。另外,我的角度js代码在将数据发布到Flask时给出了404,因为该路由似乎不存在。

app.py

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

#these routes don't work although all of the others do which is very confusing
@app.route('/misc')
@app.route('/contact/mama')
def printHello():
    return render_template('index.html')


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


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


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

这是我的棱角代码和试图处理发布请求的python脚本

var formApp = angular.module('formController', []);
formApp.controller("formControl", function($scope,$http) {
    alert("mama");
    $scope.FormSubmit = function ()
    {
        alert("In the function");
        var data =
            {
            name : $scope.user.name,
            phone : $scope.user.phone,
            email : $scope.user.email,
            message : $scope.user.message
            };
        var result = $http.post('contact/userData', data, null);
        result.success(function(response)
        {
            const message = response.status;
            alert(message)
            alert("Thanks for contacting us");
        });
        result.error(function(data, status, headers, config)
        {
            console.log(result)
            alert("Error while submitting data");
        });
        $scope.user.name = '';
        $scope.user.phone = '';
        $scope.user.email = '';
        $scope.user.message = '';
    };
});

这是处理请求的python脚本

导入系统 导入应用 导入json 从烧瓶导入请求中

@app.route("/contact/userData", methods=['GET','POST'])
def SendMail():
    message = json.dump({'status': 'success'})
    return message

3 个答案:

答案 0 :(得分:0)

json.dumps()引起了问题。将其更改为jsonify方法,代码开始工作。

答案 1 :(得分:0)

您尚未将contact / userData定义为终结点,没有在app.py中定义它,您应该会做的很好,否则至少会得到一个更有用的错误。

答案 2 :(得分:0)

发生这种情况是因为Flask应用程序可能与Angular应用程序在不同的端点上运行。因此,例如,浏览器将在http://localhost:8080/处请求您的应用,而角度应用将在http://localhost:5000/处请求服务,并且默认情况下不允许这样做。 您需要在烧瓶中启用CORS或作为我的首选解决方案,以在角度环境中创建代理:

  1. 在ng项目的根文件夹中创建文件proxy.conf.json
{
    "/vat/api": {
        "target": "http://localhost:5000/",
        "secure": false
    }
}
  1. 使用以下命令运行您的ng应用
ng serve --open --proxy-config proxy.conf.json