如何使用Flask和SQL Server作为后端删除记录?



我正在创建基本的Flask网站&API。

我想从SQL Server中删除一条记录。我设法解决了创建&更新记录。

我想到了以下内容:

api2.py

import secrets
import pdb
secret = secrets.token_urlsafe(32)
from flask import Flask,render_template,url_for, request, redirect, flash
import pyodbc
app = Flask(__name__)
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
app.config['SQLALCHEMY_ENGINE_OPTIONS'] =None
app.config['SESSION_TYPE'] =  'memcached' 
app.secret_key = secret
conn = pyodbc.connect('Driver={SQL Server};'
'Server=127.0.0.1;'
'Database=AdventureWorksDW2019;'
'UID=sa;'
'PWD=xxx;'
'Trusted_Connection=no;')
@app.route('/', methods= ['GET'])
def home():
cursor = conn.cursor()
cursor.execute("SELECT * FROM notes")
productDetails= cursor.fetchall()
return render_template('home.html', 
productDetails=productDetails)
@app.route('/delete/<string:id>', methods= ['DELETE'])
def delete(id):
if request.method=='DELETE':
cursor=conn.cursor()
productDetails1=cursor.execute("DELETE FROM notes WHERE id=?", (id))
conn.commit()
cursor.close()
return redirect('/')  

home。

{% extends 'base.html' %}
{% set active_page = 'home' %}
{% block content %}
<table bolder= 1px>
<tr>
<td> id </td>
<td> note </td>
<td> admin </td>
</tr>
{% for note in productDetails %}
<tr>
<td> {{note[0]}} </td>
<td> {{note[1]}} </td>
<td> <a href='/edit/{{note[0]}}'>Edit</a> <a href='/new_item'>Add</a> <a href='/delete/{{note[0]}}'>Delete</a>  </td>
</tr>
{% endfor %}
</table>
{% endblock %} -->

当我点击表中生成的url上的链接时,我遇到了下面的错误:

url: http://127.0.0.1:5000/delete/3

Method Not Allowed请求的URL不允许使用该方法。

当您编写<a href='/delete/{{note[0]}}'>Delete</a>时,客户端浏览器将生成一个GET请求到您的服务器(当点击链接时)。您的端点@app.route('/delete/<string:id>', methods= ['DELETE'])只允许DELETE请求。

HTML客户端不支持创建DELETE请求:PUT, DELETE, HEAD等方法在大多数web浏览器中可用吗?两种可能的解决方案:

  • 用POST请求的表单代替超链接,并适应delete(id)功能:https://stackoverflow.com/a/24794230/11405279
  • 适应使用ajax请求:Python flask DELETE请求

相关内容

  • 没有找到相关文章

最新更新