Python Flask: 实现编辑笔记功能(无数据库版)
来自CloudWiki
代码
# 编辑笔记 @app.route('/edit_article/<string:id>', methods=['GET', 'POST']) @is_logged_in def edit_article(id): article={} with open('sample.csv',"r") as fr: for line in fr: #文件对象可以直接迭代 #print(line) r = line.split(",") if r[0] !=id: continue else: #9,ansible学习,zhangsan,2022-12-30 16:52:59,ansible是一个有用技术 article['id']= r[0];article['title']=r[1];article['author']=r[2];article['update_date']=r[3]; article['content']=r[4] break; # 检测笔记不存在的情况 if not article: flash('ID错误', 'danger') # 闪存信息 return redirect(url_for('dashboard')) # 获取表单 form = ArticleForm(request.form) if request.method == 'GET': # 从数据库中获取表单字段的值 form.title.data = article['title'] form.content.data = article['content'] return render_template('edit_article.html', info=form) # 渲染模板 elif request.method == 'POST':# 如果用户提交表单,并且表单验证通过 # 获取表单字段内容 #9,ansible学习,zhangsan,2022-12-30 16:52:59,ansible是一个有用技术 with open('sample.csv',"r") as fr: line_list = fr.readlines() for i in range(0,len(line_list)): #文件对象可以直接迭代 #print(line) r = line_list[i].split(",") if r[0] !=id: continue else: r[1] = form.title.data r[2] = session['username'] r[3] = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) r[4] = form.content.data line_list[i] = ",".join(r) break; with open('sample.csv',"w") as fw: fw.writelines(line_list) #fw.write("123") flash('更新成功', 'success') # 闪存信息 return redirect(url_for('dashboard')) # 跳转到控制台
模板
edit_article.html:
<html> <head> <meta charset="utf-8"> <title>读书笔记</title> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> <link rel="stylesheet" href="/static/css/style.css"> <script src="https://cdn.bootcss.com/jquery/2.2.4/jquery.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> </head> <body> <nav class="navbar navbar-default"> <div class="container"> <div class="navbar-header"> <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a class="navbar-brand" href="/">学习笔记</a> </div> <div id="navbar" class="collapse navbar-collapse"> <ul class="nav navbar-nav"> <li><a href="/">主页</a></li> <li><a href="/articles">笔记</a></li> <li><a href="/about">关于</a></li> </ul> <ul class="nav navbar-nav navbar-right"> <li><a>欢迎 {{session.username}}</a></li> <li><a href="/logout">退出</a></li> </ul> </div><!--/.nav-collapse --> </div> </nav> <div class="container"> <h1>编辑笔记</h1> <form method="POST" action=""> <div class="form-group"> <label>标题</label> <input type="text" name="title" class="form-control" value="{{info.title.data}}"> </div> <div class="form-group"> <label>内容</label> <input type="text" name="content" class="form-control content-text" value="{{info.content.data}}" id="editor"> </div> <p><input class="btn btn-primary" type="submit" value="提交"> </form> <script src="//cdn.ckeditor.com/4.11.2/standard/ckeditor.js"></script> <script type="text/javascript"> <!-- CKEDITOR.replace( 'editor') --> </script> </div> <!-- Footer --> <footer class="page-footer font-small blue" style="margin-top: 50px"> <!-- Copyright --> <div class="footer-copyright text-center py-3"> Copyright ©2007-2019 <a href="http://www.mingrisoft.com">明日科技有限公司</a> All Rights Reserved 吉ICP备10002740号-2 吉公网安备22010202000132 </div> <!-- Copyright --> </footer> <!-- Footer --> </body> </html>