发布400(错误请求)

时间:2018-06-26 16:21:52

标签: python jquery ajax flask flask-wtforms

我正在尝试提交我的表格,但是由于POST出了点问题,它一直失败。我不确定到底是什么地方/究竟是什么导致服务器不处理请求,无论它是否与语法,请求路由等有关。我还注释掉了与文件上传有关的每一行,并注释了if(validated )声明。因此,控制台中没有错误,但是表单提交仍然失败。感谢您的帮助/指导。

我提交表单时收到以下错误消息:

POST http://127.0.0.1:5051/register/ 400(错误请求)

views.py

@blueprint.route("register/", methods=['GET', 'POST'])
def register():
    """Renders register page."""
    form = RegisterForm()
    if request.method == 'POST':
        if not form.validate_on_submit():
            return render_template('main/register.html', page_title="Service Registration",
                                   form=form, form_success=False, media_types=current_app.config["ACCEPTED_"
                                                          "MEDIA_TYPE"])
        ticket, err = create_ticket2(customer_id, organization + "\n" + venue_name + "\n" + street + "\n" + country + "\n" + teamviewquestion + "\n" + teamviewerid + "\n" + deviations + "\n" + deviationsnotes + "\n" + displaydirector + "\n" + composer + "\n" + decryptor + "\n" + motionrocket + "\n" + othersoftware,
                                     location=location)
        if err:
            return render_template('main/register.html', page_title="Service Registration",
                                   form=form, form_success=False, message=err, media_types=current_app.config["ACCEPTED_"
                                                          "MEDIA_TYPE"])
        else:
            success_msg = "Error"
                .format(ticket.get('id'))
            return render_template('main/register.html', page_title="Service Registration",
                                   form=form, form_success=True, message=success_msg, media_types=current_app.config["ACCEPTED_"
                                                          "MEDIA_TYPE"])
    return render_template('main/register.html', page_title="Service Registration",
                           form=form, media_types=current_app.config["ACCEPTED_"
                                                          "MEDIA_TYPE"])
    """Handles file upload POSTs."""
    first_name = request.form.get("first_name")
    last_name = request.form.get("last_name")
    name = request.form.get("first_name") + " " + request.form.get("last_name")
    email = request.form.get("email")
    filename = request.form.get("filename")
    file_type = request.form.get("file_type")
    if filename == '':
        response = make_response("No selected file")
        return response, 400
    if check_file_type(file_type):
        filename = clean_filename(filename)
        filename = secure_filename(filename)
        filename = unique_filename(filename)
        response = generate_presigned_post(filename, file_type)
        # CREATE DB REFERENCE
        url = "http://nevcodocs.s3.amazonaws.com/Uploads/{}".format(filename)
        instance = CustomerFileUpload.query.filter_by(url=url).first()
        if not instance:
            instance = CustomerFileUpload(url=url, email=email, name=name)
            db.session.add(instance)
            db.session.commit()
        else:
            instance.update(created_at=datetime.utcnow())
        return response, 200

js(门票提交功能)

$('#ticket-form').submit(function(event) {
            if (validated) {
                $('#filename').val($('#upload').val());
                $.ajax({
                    type: 'POST',
                    url: '/register/',
                    data: $('#ticket-form').serialize()
                }).done(function(data) {
                    var formData = new FormData();
                    for (var key in data.data) {
                        formData.append(key, data.data[key]);
                    }
                    formData.append('file', $('#upload').prop('files')[0]);
                    formData.append('csrf_token', '{{ csrf_token }}');
                    var req = new XMLHttpRequest();
                    req.onload = function() {
                        showSpinner(false);
                        $('#ticket-form').removeClass("support-form-show");
                        $('#ticket-form').addClass("support-form-hide");
                    };
                    req.onerror = function() {
                        showSpinner(false);
                        $('#ticket-form-failed').removeClass("support-form-hide");
                        $('#ticket-form-failed').addClass("support-form-show");
                    };
                    req.open('POST', '/register/');
                    req.send(formData);
                }).fail(function(err) {
                    showSpinner(false);
                    $('#ticket-form-failed').removeClass("support-form-hide");
                    $('#ticket-form-failed').addClass("support-form-show");
                });
            } else {
                showSpinner(false);
                enableSubmit(true);
            }
        });

1 个答案:

答案 0 :(得分:0)

通常,bad request意味着您正在尝试使用无效键从request对象中获取数据。因此,您需要确保您的POST请求正文(由javascript发送)包含您用作request.form.get()方法的参数的所有键:first_name,last_name等...