Flask 和 JavaScript 确认删除前 [英] Flask and JavaScript Confirm Before Deleting

查看:36
本文介绍了Flask 和 JavaScript 确认删除前的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在 pythonanywhere 上发布的 Flask 应用程序有问题.这是一个仪表板,如果我单击帖子的标题,它应该会显示帖子的详细信息.我想在删除之前添加确认消息.我怎样才能做到?现在我尝试使用 javascript,但它不起作用.以下是我的代码.

app.py

将 MySQLdb 导入为 mysqlcon = mysql.connect("host", "username", "password", "database")con.ping(真)@app.route('/deleteschool/')def deleteschool(School_Id):尝试:如果 session.get('user'):#con = mysql.connect()游标 = con.cursor()query_string = "DELETE FROM school WHERE School_Id = '{School_Id}'".format(School_Id=School_Id)cursor.execute(query_string)#cursor.execute("DELETE from school where School_Id=%s", (School_Id))删除=cursor.fetchall()如果 len(delete) 为 0:提交()返回重定向('/getSchoolList')别的:返回重定向('/错误')别的:返回重定向('/错误')除了作为 e 的例外:返回重定向('/错误')

school_page_showpost.html

{% 用于校帖中的行 %}<div id="titleOutput" class="两个字段"><div class="field"><label>TITLE</label><textarea id="ckeditor1" class="cleditor" disabled="yes" readonly="yes" rows="1">{{row[1]}}</textarea></div></div><div id="contentsOutput" class="field"><h6></h6><label>内容</label><textarea id="ckeditor2" class="cleditor" disabled="yes" readonly="yes" rows="10" cols="80">{{row[2]}}</textarea><脚本>var editor2=CKEDITOR.replace('ckeditor2');

<div class="额外内容"><div class="右浮动作者"><span class="右浮动时间">{{row[4]}}&nbsp;</span><span class="category">校务委员会&nbsp;</span><span class="writer">{{row[3]}}</span>

<br><br><ul class="actions 分页"><li><a onclick="javascript : window.location = '/editschool/{{row[0]}}' " class="ui button">EDIT</a></li><li><button id="confirmDeleteSchool" type="submit" name="confirmDeleteSchool" class="ui button">DELETE</button></li><li><a href="/school" class="ui button" >LIST</a></li>{% 结束为 %}

confirm.js

$(function(){$('#confirmDeleteSchool').click(function(){var confirm = confirm("你确定吗?");如果(确认 == 真){$.ajax({url: '/delteschool/{{row[0]}}',成功:功能(响应){控制台日志(响应);},错误:函数(错误){控制台日志(错误);}});} 别的 {}});});

如果我点击删除按钮,它应该加载confirm.js文件并执行.但它什么也不做.请帮忙.

解决方案

类似任务的替代方法:

我在仅使用 HTML 和 jinja 通过模态删除帖子之前实现了一个确认步骤.

{% 块体 %}<h1>仪表板<小>欢迎{{session.username}} </small></h1><a class="btn btn-success" href="/add_article">添加文章</a><小时><table class="table table-striped"><tr><th>ID</th><th>Title</th><th>作者</th><第>日期</th><th></th><th></th></tr>{% 为文章中的文章 %}<tr><td>{{article.id}}</td><td>{{article.title}}</td><td>{{article.author}}</td><td>{{article.create_date}}</td><td><a href="edit_article/{{article.id}}" class="btn btn-default pull-right">编辑 </a></td><td><!-- 按钮触发模态--><button type="button" class="btn btn-danger" data-toggle="modal" data-target="#exampleModalCenter{{article.id}}">删除<!-- 模态--><div class="modalfade" id="exampleModalCenter{{article.id}}"><div class="modal-dialog modal-dialog-centric" role="document"><div class="modal-content"><div class="modal-header"><h5 class="modal-title" id="exampleModalLongTitle{{article.id}}">永久删除帖子</h5><button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span>

<div class="modal-body"><h3>{{article.title}}??</h3><p>你确定吗?</p>

<div class="modal-footer"><button type="button" class="btn btn-secondary" data-dismiss="modal">取消</button><form action="{{url_for('delete_article', id=article.id)}}" method="post"><input type="submit" value="Delete" class="btn btn-danger"></表单>

</td></tr>{% 结束为 %}{% 结束块 %}

I have a problem with flask app published pythonanywhere. This is a dashboard and if I click the title of the posting, it is supposed to show details of the posting. I want to add confirm message before delete. How can I make it? Now I try to use javascript, but it doesn't work. Below are my codes.

app.py

import MySQLdb as mysql
con = mysql.connect("host", "username", "password", "database")
con.ping(True)

@app.route('/deleteschool/<int:School_Id>')
def deleteschool(School_Id):
try:
    if session.get('user'):
        #con = mysql.connect()
        cursor = con.cursor()
        query_string = "DELETE FROM school WHERE School_Id = '{School_Id}'".format(School_Id=School_Id)
        cursor.execute(query_string)
        #cursor.execute("DELETE from school where School_Id=%s", (School_Id))
        delete=cursor.fetchall()
        if len(delete) is 0:

            con.commit()
            return redirect('/getSchoolList')
        else:
            return redirect('/error')


    else:
        return redirect('/error')
except Exception as e:

    return redirect('/error')

school_page_showpost.html

<script src="/static/js/confirm.js"></script>
{% for row in schoolpost %}
                <div id="titleOutput" class="two fields">
                    <div class="field">
                    <label>TITLE</label>
                    <textarea id="ckeditor1" class="cleditor" disabled="yes" readonly="yes" rows="1">{{row[1]}}</textarea></div></div>

                    <div id="contentsOutput" class="field">
                        <h6></h6>
                        <label>CONTENTS</label>

                    <textarea id="ckeditor2" class="cleditor" disabled="yes" readonly="yes" rows="10" cols="80">{{row[2]}}

                        </textarea>
                        <script>
    var editor2=CKEDITOR.replace( 'ckeditor2' );
</script>
                </div>

            </div>
                <div class="extra content">
                    <div class="right floated author">
                        <span class="right floated time">{{row[4]}}&nbsp;</span>
                            <span class="category">School board&nbsp;</span>
                        <span class="writer">
                    {{row[3]}}</span>
                    </div>
                </div>

            </div>

            <br><br>
                          <ul class="actions pagination">
                <li><a onclick="javascript : window.location = '/editschool/{{row[0]}}' " class="ui button">EDIT</a></li>
                <li><button id="confirmDeleteSchool" type="submit" name="confirmDeleteSchool" class="ui button">DELETE</button></li>
                <li><a href="/school" class="ui button" >LIST</a></li>
            </ul>

{% endfor %}

confirm.js

$(function(){
    $('#confirmDeleteSchool').click(function(){
        var confirm = confirm("Are you sure?");
    if (confirm == true) {
    $.ajax({
        url: '/delteschool/{{row[0]}}',

        success: function(response){
            console.log(response);
        },
        error: function(error){
            console.log(error);
        }
    });

} else {

}
    });

});

If I click delete button, it is supposed to load confirm.js file and execute. But it does nothing. Please help.

解决方案

An alternative approach for a similar task:

I implemented a confirmation step before deleting post through modal by using only HTML and jinja.

{% block body %}
  <h1>Dashboard <small> Welcome {{session.username}} </small></h1>
  <a class="btn btn-success" href="/add_article">Add Article</a>
  <hr>
  <table class="table table-striped">
    <tr>
      <th>ID</th>
      <th>Title</th>
      <th>Author</th>
      <th>Date</th>
      <th></th>
      <th></th>
    </tr>
    {% for article in articles %}
      <tr>
        <td>{{article.id}}</td>
        <td>{{article.title}}</td>
        <td>{{article.author}}</td>
        <td>{{article.create_date}}</td>
        <td> <a href="edit_article/{{article.id}}" class="btn btn-default pull-right"> Edit </a></td>
        <td>

          <!-- Button trigger modal -->
          <button type="button" class="btn btn-danger" data-toggle="modal" data-target="#exampleModalCenter{{article.id}}">
            Delete
          </button>
          <!-- Modal -->
          <div class="modal fade" id="exampleModalCenter{{article.id}}">
            <div class="modal-dialog modal-dialog-centered" role="document">
              <div class="modal-content">
                <div class="modal-header">
                  <h5 class="modal-title" id="exampleModalLongTitle{{article.id}}">Deleting Post Permanently</h5>
                  <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                    <span aria-hidden="true">&times;</span>
                  </button>
                </div>
                <div class="modal-body">
                  <h3>{{article.title}}??</h3>
                  <p>Are you sure?</p>
                </div>
                <div class="modal-footer">
                  <button type="button" class="btn btn-secondary" data-dismiss="modal">Cancel</button>

                  <form action="{{url_for('delete_article', id=article.id)}}" method="post">
                    <input type="submit" value="Delete" class="btn btn-danger">
                  </form>
                </div>
              </div>
            </div>
          </div>


        </td>
      </tr>
    {% endfor %}
  </table>
{% endblock %}

这篇关于Flask 和 JavaScript 确认删除前的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
前端开发最新文章
热门教程
热门工具
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆