似乎无法从我的 php 本地主机删除或添加到数据库

问题描述 投票:0回答:1

我正在与其他人一起构建部分网站,但是当我想删除选中的项目时,会出现错误 “未找到 在服务器上找不到请求的 URL。如果您手动输入 URL,请检查拼写并重试。”

网址是http://127.0.0.1:8080/delete

这是我的脚本:

初始化.py

from flask import Flask, render_template,request, flash, redirect, url_for
from flask_mysqldb import MySQL, MySQLdb

app = Flask(__name__)

app.config['SECRET_KEY'] = 'IFT402'
app.config['MYSQL_HOST'] = "localhost"
app.config['MYSQL_USER'] = "root"
app.config['MYSQL_PASSWORD'] = ""
app.config['MYSQL_DB'] = "webapp"

mysql = MySQL(app)

@app.route('/', methods=['GET','POST'])
def home():
    if request.method == 'POST':
        pass
    return render_template ('home.html')


@app.route('/newMovement', methods=['GET', 'POST'])
def newMovement():
    if request.method == 'POST':
        assetID = request.form['assetID']
        issueDate = request.form['issueDate']
        Location = request.form['Location']
        EmployeeName = request.form['EmployeeName']
        returnDate = request.form['returnDate']
        details = request.form['details']
        returnStatus = request.form['returnStatus']

        cur = mysql.connection.cursor()
        try:
            cur.execute("INSERT INTO items (assetID, issueDate, Location, EmployeeName, returnDate, details, returnStatus) VALUES (%s,%s,%s,%s,%s,%s,%s)", (assetID, issueDate, Location, EmployeeName, returnDate, details, returnStatus))
            mysql.connection.commit()
            flash('Item added successfully', 'success')
        except Exception as e:
            flash(f'Error: {str(e)}', 'error')
        finally:    
            cur.close()

    return render_template('newMovement.html')

@app.route('/transfer')
def items():
    cur = mysql.connection.cursor()
    #cur.execute("SELECT * FROM items")
    #itemDetails = cur.fetchall()
    #cur.close()
    #return render_template('transfer.html', itemDetails=itemDetails)

    items = cur.execute("SELECT * FROM items")
    if items > 0:
        itemDetails = cur.fetchall()
        return render_template('transfer.html', itemDetails=itemDetails)
    
@app.route('/newrestock', methods=['GET', 'POST'])
def newRestock():
    if request.method == 'POST':
        assetID = request.form['assetID']
        restockDate = request.form['restockDate']
        Quantity = request.form['Quantity']
        detailsRestock = request.form['detailsRestock']
        
        cur = mysql.connection.cursor()
        try:
            cur.execute("INSERT INTO restock (assetID, restockDate, Quantity, detailsRestock) VALUES (%s,%s,%s,%s)", (assetID, restockDate, Quantity, detailsRestock))
            mysql.connection.commit()
            flash('Restock added successfully', 'success')
        except Exception as e:
            flash(f'Error: {str(e)}', 'error')
        finally:
            cur.close()

    return render_template('newRestock.html')

@app.route('/restock')
def restock():
    cur = mysql.connection.cursor()
    restock = cur.execute("SELECT * FROM items")
    if restock > 0:
        restockDetails = cur.fetchall()
        return render_template('restock.html', restockDetails=restockDetails)

@app.route('/delete/<int:id>', methods=['GET','POST'])
def deleteMovement(id):
        cur = mysql.connection.cursor()
        cur.execute("DELETE FROM items WHERE id = %s", (id,))

        mysql.connection.commit()
        cur.close()
        flash('Item sucessfully deleted', 'success')
        return redirect('/transfer')
        
if __name__ == "__main__":
    app.run(debug=True, port=8080, use_reloader=False)

转账.html

{% extends "base.html" %}
{% block title %} Transfer {% endblock %} 
{% block content %}

<style>
    table {
        width: 100%;
        border-collapse: collapse;
    }

    th,td {
        text-align: left;
        padding: 8px;
        border: 1px solid #ddd;
    }
    th {
        background-color: #f2f2f2;
    }

    .button-container {
        display: flex;
    }

    .button {
        margin: 5px;
    }
</style>
<h1>Digitalize Asset Tracker for P.T. Invosa System</h1>
<form action="/search" method="GET">
    <input type="text" name="query" placeholder="INFORMATION>>>>>>">
    <div class="button-container">
        <a href="{{ url_for('newMovement') }}" class="btn btn-primary">Add Movement</a>
        <form action="/delete/{{ assetID }}" method="post">
            <input type = "submit" value="Delete">
        </form>
        <button type="submit">Activity Report</button>
    </div>
</form>

<h2 align="center">Asset List</h2>
<!--<form method = "POST" action="/delete"> -->
    <table border="1">
        <thead>
            <tr>
                <th>Asset ID</th>
                <th>Issue Date</th>
                <th>Location</th>
                <th>Employee Name</th>
                <th>Return Date</th>
                <th>Details</th>
                <th>Return Status</th>
                <th>Select</th>
            </tr>
        </thead>
        <tbody>
            {% for items in itemDetails %}
            <tr id="{{ items.id }}">
                <td>{{ items[0] }}</td>
                <td>{{ items[1] }}</td>
                <td>{{ items[2] }}</td>
                <td>{{ items[3] }}</td>
                <td>{{ items[4] }}</td>
                <td>{{ items[5] }}</td>
                <td>{{ items[6] }}</td>
                <td><input type="checkbox" name="mycheckbox" value="{{ items.id }}"></td>
            </tr>
            {% endfor %}
        </tbody>
    </table>

    <form method ="POST" action="/delete">
        <button type = submit class="btn btn-danger">Delete</button>
    </form>

{% endblock %}

我尝试更改删除路线,但故障排除失败。

python flask sql-delete
1个回答
0
投票

我认为您没有传递路线的 id。如果您使用 url_for(),您可以使用 jinja 将 id 字段传递给您的 python deleteMovement 函数。

<form method ="POST" action="{{ url_for('deleteMovement', id=items.id) }}">
    <button type = submit class="btn btn-danger">Delete</button>
</form>

如果 items.id 为 1,它将创建一个类似 http://127.0.0.1:8080/delete/1 的 url。

© www.soinside.com 2019 - 2024. All rights reserved.