• flask+sqlalchemy查改删


    效果:

    main.py

    1# coding: utf-8
    from sqlalchemy import CheckConstraint, Column, Integer, Text, or_
    from sqlalchemy.schema import FetchedValue
    from flask_sqlalchemy import SQLAlchemy
    from flask import Flask,url_for,redirect,render_template,request,flash,current_app
    import os,sys
    
    app =  Flask(__name__)
    basedir = os.path.abspath(os.path.dirname(__file__))
    app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///test.db'
    app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
    
    db = SQLAlchemy(app)
    
    class Teacher(db.Model):
        __tablename__ = 'Teachers'
        Id = db.Column(db.Integer, primary_key=True)
        Name = db.Column(db.Text)
        Age = db.Column(db.Integer)
        Country = db.Column(db.Text)
    
        def __init__(self,Name,Age,Country):
            self.Name = Name
            self.Age = Age
            self.Country = Country
    @app.route('/', methods=['GET'])
    def home():
        article = Teacher.query.all()
        return render_template('show_article.html',article=article)    
    @app.route('/search')
    def search():
        keyword = request.args.get('keyword')
        print(keyword)
        result = Teacher.query.filter(or_(Teacher.Name==keyword,Teacher.Age==keyword,Teacher.Country==keyword)).all() 
        if result:
            return render_template('show_article.html', article=result)
        else:
            return 'No content was found!'
    @app.route('/list/update/<id>',methods=['GET','POST'])
    def modi(id):
        if request.method=='GET':
            result = Teacher.query.filter_by(Id=id).first_or_404()
            return render_template('update_article.html',article=result)
        else:
            Name = request.form['Name']
            Age = request.form['Age']
            Country = request.form['Country']    
            result =  Teacher.query.filter_by(Id=id).update({'Name':Name, 'Age':Age,'Country':Country})
            db.session.commit()
            return redirect('/')
    @app.route('/<id>',methods=['GET','DELETE'])        
    def remove_record(id):
        if request.method=='GET':
            result = Teacher.query.filter_by(Id=id).first.or_404
            return render_template('show_article.html', article=result)
        else:
            result = Teacher.query.filter_by(Id=id).delete()
            db.session.commit()
            return  '',204
    @app.route('/favicon.ico')
    def favicon():
        return send_from_directory(os.path.join(app.root_path, 'static'),
                                   'favicon.ico', mimetype='image/vnd.microsoft.icon')        
    if __name__ =='__main__':
        app.run(port=8081)      
    

    show_article.html

    <!DOCTYPE HTML>
    <html>
    <head>
    <link href="//www.w3cschool.cn/statics/plugins/bootstrapold/css/bootstrap.min.css" rel="stylesheet">
    <script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
    <link rel="shortcut icon" href="{{ url_for('static', filename='favicon.ico') }}">
    </head>
    <body>
    <!-- Jinja模板语法 -->
    <div>
        <form method="GET" action="{{ url_for('search') }}" />
            <input type="text" Name="keyword" />
            <input type="submit" />
            <span><a href="{{ url_for('home') }}">Home</a></span>
        </form>
        
    </div>
    <table style="240px" class="table table-striped" >
        <thead>
            <tr >
                <th style="120px">Name</th>
                <th style="60px">Age</th>
                <th style"60px">Country</th>
            </tr>
        </thead>
        <tbody>                 
            {% if article %}
                {% for article in article%}
                <tr>
                    <td>{{article.Name}}</td>   
                    <td>{{article.Age}}</td>   
                    <td>{{article.Country}}</td>
                    <td><span class="label label-info"><a href="/list/update/{{article.Id}}" style="color:white">修改</a></span></td>
                    <td><span class="label label-success"><a href="#" class="btn-delete" aid="{{article.Id}}" style="color:white">删除</a></span></td>
                </tr>
                {% endfor %}
        </tbody>
            {% else %}
                <p>No content was found!</p>
            {% endif %}
    
    <script type="text/javascript">
        $('a.btn-delete').on('click',function(evt){
            evt.preventDefault();
            var aid = $(this).attr('aid');
            $.ajax({
                url: "/" + aid,
                type: "DELETE",
                contentType:"application/json",
                success:function(resp){
                    window.open("/","_self");
                },
                error:function(resp){
                    alert("删除博文失败!详情:" + resp.message);
                }
            })
        });
    </script>
    </table>
    </body>
    </html>
    

      

    update_article.html

    <!DOCTYPE html>
    <html>
    <head>
    <link rel="shortcut icon" href="{{ url_for('static', filename='favicon.ico') }}">
    </head>
    <body>
        <div>
            <form action="/list/update/{{article.Id}}" method="POST">
           
                    <label>Name:<label>
                    <input type="text" name="Name" value="{{article.Name}}" />
                    <br><br>
                    <label>Age:</label>
                    <input type="text" name="Age" value="{{article.Age}}" />
                    <br><br>
                    <label>Country:</label>
                    <input type="text" name="Country" value="{{article.Country}}" />
                    <br><br>   
                    <input type=submit />
            </table>
            <tbody>
            </form>
        </div>
    <body>
    </html>
    

      

      

  • 相关阅读:
    UVA 129 Krypton Factor (困难的串)(回溯法)
    UVA 524 Prime Ring Problem(素数环)(回溯法)
    【POJ 2559】Largest Rectangle in a Histogram【栈】
    【POJ 2559】Largest Rectangle in a Histogram【栈】
    向右看齐【栈】
    向右看齐【栈】
    向右看齐【栈】
    【模板】最近公共祖先【LCA】
    【模板】最近公共祖先【LCA】
    【模板】最近公共祖先【LCA】
  • 原文地址:https://www.cnblogs.com/luoye00/p/12176074.html
Copyright © 2020-2023  润新知