Python Flask: 实现编辑笔记功能

来自CloudWiki
跳转至: 导航搜索

代码

# 编辑笔记
@app.route('/edit_article/<string:id>', methods=['GET', 'POST'])
@is_logged_in
def edit_article(id):
    db = MysqlUtil()  # 实例化数据库操作类
    fetch_sql = "SELECT * FROM articles WHERE id = '%s' and author = '%s'" % (id,session['username']) # 根据笔记ID查找笔记信息
    article = db.fetchone(fetch_sql) # 查找一条记录
    # 检测笔记不存在的情况
    if not article:
        flash('ID错误', 'danger') # 闪存信息
        return redirect(url_for('dashboard'))
    # 获取表单
    form = ArticleForm(request.form)
    if request.method == 'POST' and form.validate(): # 如果用户提交表单,并且表单验证通过
        # 获取表单字段内容
        title = request.form['title']
        content = request.form['content']
        update_sql = "UPDATE articles SET title='%s', content='%s' WHERE id='%s' and author = '%s'" % (title, content, id,session['username'])
        db = MysqlUtil() # 实例化数据库操作类
        db.update(update_sql) # 更新数据的SQL语句
        flash('更改成功', 'success') # 闪存信息
        return redirect(url_for('dashboard')) # 跳转到控制台

    # 从数据库中获取表单字段的值
    form.title.data = article['title']
    form.content.data = article['content']
    return render_template('edit_article.html', form=form) # 渲染模板


模板

{% extends 'layout.html' %}

{% block body %}
  <h1>编辑笔记</h1>
  {% from "includes/_formhelpers.html" import render_field %}
  <form method="POST" action="">
    <div class="form-group">
      {{ render_field(form.title, class_="form-control") }}
    </div>
    <div class="form-group">
      {{ render_field(form.content, class_="form-control", id="editor") }}
    </div>
    <p><input class="btn btn-primary" type="submit" value="Submit">
  </form>

    <script src="//cdn.ckeditor.com/4.11.2/standard/ckeditor.js"></script>
    <script type="text/javascript">
      CKEDITOR.replace('editor')
    </script>
{% endblock %}

效果图

Python22011703.png