在以/reg.html格式提交表单时,";方法不允许该方法不允许用于请求的URL。”;显示

在以/reg.html格式提交表单时,";方法不允许该方法不允许用于请求的URL。”;显示,html,flask,Html,Flask,我正在尝试以下方法: 首先打开homepage.html 如果选择了Register,则移动到reg.html并输入表单。提交表单并进行一些后端处理 如果选择“显示”,则打印已注册的API 我面临的问题是,当我试图填写表单并单击submit时,会显示错误405。因此,进一步的行动是无效的 homepage.html <!DOCTYPE html> <html> <head> <title>API Management Platfor

我正在尝试以下方法:

  • 首先打开homepage.html
  • 如果选择了Register,则移动到reg.html并输入表单。提交表单并进行一些后端处理
  • 如果选择“显示”,则打印已注册的API
我面临的问题是,当我试图填写表单并单击submit时,会显示错误405。因此,进一步的行动是无效的

homepage.html

<!DOCTYPE html>
<html>
  <head>
    <title>API Management Platform</title>
  </head>
  <body>
    <h1>Welcome to API Management Platform</h1>
    <h2>You can register a new API and also see a list of already registered APIs</h2>
    Click on one of the following links!<br>
        1. <a href=reg>Register a new API</a><br>
        2. <a href=show>Display the list of APIs</a><br>
  </body>
</html>
<!DOCTYPE html>
<html>
  <head>
    <title>Register API</title>
  </head>
  <body>
    <h1>Welcome to API Management Platform</h1>
    <h2>Please enter the API details</h2>
    <form action=. method="POST" enctype="multipart/form-data">
      <h3>API Data</h3>
      <p>Name: <input type = "text" name = "Name" /></p>
      <p>Description: <input type = "text" name = "Description" /></p>
      <p>Link: <input type = "url" name = "Link" /></p>
      <p>Developer: <input type = "text" name = "Developer" /></p>
      <input type="submit" name="my-form" value="Submit"><br>
    </form>
  </body>
</html>
<!DOCTYPE html>  
<html>
   <head>
      <meta name="viewport" content="width=device-width, initial-scale=1">
      <title>List of APIs</title>
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>  
      <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" />
      <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>  
   </head>
   <body>
      <br />  
      <div class="container" >
         <div class="table-responsive">
            <h1>Details</h1>
            <br />
            <table class="table table-bordered table-striped" id="employee_table">
               <tr>
                    <th>API ID</th>
                    <th>Name</th>
                    <th>Description</th>
                    <th>Link</th>
                    <th>Developed By</th>
               </tr>
            </table>
         </div>
      </div>
      <br />  
   </body>
</html>
<script>
  $(document).ready(function(){
    $.getJSON("https://extendsclass.com/api/json-storage/bin/dabbbff", function(data){
      var employee_data = '';
      $.each(data, function(key, value){
        employee_data += '<tr>';
        employee_data += '<td>'+key+'</td>';
        employee_data += '<td>'+value.Name+'</td>';
        employee_data += '<td>'+value.Description+'</td>';
        employee_data += '<td>'+value.Link+'</td>';
        employee_data += '<td>'+value.Developer+'</td>';
        employee_data += '<tr>';
      });
      $('#employee_table').append(employee_data);
    });    
  });
</script>

发生错误的原因是:

因为您的表单中有“action=”

在转换为“action=”.”的页面上呈现

哪些路线到:

@app.route('/')
def home():
因为home函数不是用来处理POST方法的(默认为GET)。您得到一个“a 405方法不允许的错误”

默认情况下,如果未分配表单操作,则在将表单路由到其所在页面的功能/路由时

在reg.html中,更改此行

<form action=. method="POST" enctype="multipart/form-data">



你的
动作
是空的。@ngShravil.py,里面不是空的。@akibrhat,但它只是
动作=。
,不是
动作=。
@ngShravil.py你说得对。然而,行动=。已转换为action=''。“automaticallyOhh,我不知道。感谢您让我知道。但是,我认为这是一种不好的做法。我实际上还需要做一件事。因此,我希望show.html文件从本地json文件“API_data.json”获取数据“而不是在线链接。它似乎不起作用。该文件很容易从在线json数据存储中获取数据,但无法从本地文件中获取数据。reg.html部分工作正常。请就@harshbimraka单独提问。详细说明,你已经尝试过的。预期的结果是什么,你目前得到的结果是什么。只需附带说明一下如何使用ajax使用flask从前端到后端来回发送数据
<form action=. method="POST" enctype="multipart/form-data">
<form action="{{url_for('my_form_post')}}" method="POST" enctype="multipart/form-data">