1.5新闻版式编辑

效果如下:并且同时做到能编辑修改成功

 

 

 1、后台代码

 1 @admin_blue.route('/news_edit_detail/<int:news_id>',methods=['POST','GET'])
 2 def news_edit_detail(news_id):
 3     #处理get请求
 4     news = None
 5     try:
 6         # 查询和形参中id相等得第一个新闻
 7         news = News.query.filter(News.id == news_id).first()
 8         # 查询所有得分类
 9         categories = Category.query.all()
10     except Exception as e:
11         # 记录日志
12         current_app.logger.error(e)
13     if not News:
14         abort(404)
15 
16     #处理post请求接收参数
17     if request.method =="POST":
18         title = request.form.get("title")
19         category_id = request.form.get("category_id")
20         digest = request.form.get("digest")
21         index_image_not = request.files.get("index_image")
22         content = request.form.get("content")
23         #判断参数是否齐全
24         if not all([title,category_id,digest,content]):
25             return jsonify(errno=RET.DBERR, errmsg="数据不齐全")
26 
27         try:
28             #查询id等于形参接收到得一样id 得新闻
29             news = News.query.filter(News.id == news_id).first()
30         except Exception as e:
31             current_app.logger.error(e)
32         try:
33             #查询id等于形参接收到得一样id 得新闻
34             Category.query.filter(Category.id == category_id).all()
35         except Exception as e:
36             current_app.logger.error(e)
37             return jsonify(errno=RET.DBERR, errmsg="数据错误")
38 
39         if index_image_not:
40             try:
41                 #判断是否接收到图片
42                 index_image = index_image_not.read()
43             except Exception as e:
44                 current_app.logger.error(e)
45             try:
46                 # 用key变量接收上传完七牛云返回的指纹
47                 key = upload_file(index_image)
48             except Exception as e:
49                 current_app.logger.error(e)
50         #将新值赋值给新闻
51         news.title = title
52         news.category_id = category_id
53         news.digest = digest
54         news.index_image_url = constants.QINIU_DOMIN_PREFIX + key
55         news.content = content
56         try:
57             #数据提交
58             db.session.commit()
59         except Exception as e:
60             #出错回滚
61             db.session.rollback()
62             current_app.logger.error(e)
63         #返回结果
64         return jsonify(errno=RET.OK, errmsg="成功")
65     # 传递上下文
66     context = {
67         "categories": categories,
68         "news": news,
69 
70     }
71 # 渲染页面
72     return render_template("admin/news_edit_detail.html", context=context)

2、前端代码(新闻页面

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>新经资讯后台管理</title>
 6     <link rel="stylesheet" type="text/css" href="../../static/admin/css/reset.css">
 7     <link rel="stylesheet" type="text/css" href="../../static/admin/css/main.css">
 8     <link rel="stylesheet" href="../../static/admin/css/jquery.pagination.css">
 9     <script type="text/javascript" src="../../static/admin/js/jquery-1.12.4.min.js"></script>
10     <script type="text/javascript" src="../../static/admin/js/jquery.pagination.min.js"></script>
11 </head>
12 <body>
13     <div class="breadcrub">
14             当前位置:新闻管理>新闻版式编辑
15             <form class="news_filter_form">
16                 <input type="text" name="keyword" placeholder="请输入关键字" class="input_txt">
17                 <input type="submit" value="搜 索" class="input_sub">
18             </form>
19         </div>
20         <div class="pannel">
21             <table class="common_table">
22                 <tr>
23                     <th width="3%">id</th>
24                     <th width="70%">标题</th>
25                     <th width="15%">发布时间</th>
26                     <th width="8%">管理操作</th>
27                 </tr>
28 
29                 {% for news in context.news_list %}
30                     <tr>
31                         <td>{{ news.id }}</td>
32                         <td class="tleft">{{ news.title }}</td>
33                         <td>{{ news.create_time }}</td>
34                         <td>
35                             <a href="{{ url_for("admin.news_edit_detail",news_id=news.id) }}" class="review">编辑</a>
36                         </td>
37                     </tr>
38                 {% endfor %}
39 
40             </table>
41         </div>
42 
43         <div class="box">
44             <div id="pagination" class="page"></div>
45         </div>
46 
47         <script>
48             $(function() {
49                 $("#pagination").pagination({
50                     currentPage: {{ context.current_page }},
51                     totalPage: {{ context.total_page }},
52                     callback: function(current) {
53                         window.location = '/admin/news_edit?p=' + current;
54                     }
55                 });
56             });
57         </script>
58 
59 
60 </body>
61 </html>

2.2前端代码(编辑页面

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>新经资讯后台管理</title>
 6     <link rel="stylesheet" type="text/css" href="../../static/admin/css/reset.css">
 7     <link rel="stylesheet" type="text/css" href="../../static/admin/css/main.css">
 8     <script type="text/javascript" src="../../static/admin/js/jquery-1.12.4.min.js"></script>
 9     <script type="text/javascript" src="../../static/admin/js/jquery.form.min.js"></script>
10     <script src="../../static/admin/tinymce/js/tinymce/tinymce.min.js"></script>
11     <script src="../../static/admin/js/tinymce_setup.js"></script>
12     <script src="../../static/admin/js/news_edit_detail.js"></script>
13 </head>
14 <body>
15     <div class="breadcrub">
16             当前位置:新闻管理>新闻版本编辑
17         </div>
18         <div class="pannel">
19             <form class="news_edit">
20             <h3 class="review_title">新闻版式编辑</h3>
21 
22                 <div class="form_group">
23                     <label>新闻标题:</label>
24                     <input name="title" type="text" class="input_txt2" value="{{ context.news.title }}">
25                 </div>
26                 <div class="form_group">
27                     <label>新闻分类:</label>
28                     <select class="sel_opt" name="category_id">
29                         {% for category in context.categories %}
30                             <option value="{{ category.id }}" {% if category.id == context.news.category_id %}selected{% endif %}>{{ category.name }}</option>
31                         {% endfor %}
32                     </select>
33                 </div>
34                 <div class="form_group">
35                     <label>新闻摘要:</label>
36                     <textarea class="input_multxt" name="digest">{{ context.news.digest }}</textarea>
37                 </div>
38                 <div class="form_group">
39                     <label>索引图片:</label>
40                     <img src="{{ context.news.index_image_url }}" alt="索引图片" class="index_pic">
41                 </div>
42                 <div class="form_group">
43                     <label>上传图片:</label>
44                     <input type="file" name="index_image" class="input_file">
45                 </div>
46                 <div class="form_group">
47                     <label>新闻内容:</label>
48                     <div class="rich_wrap fl">
49                         <input class="input_area" id="rich_content" name="content" value="{{ context.news.content }}"></input>
50                     </div>
51                 </div>
52                 {# 添加隐藏字段新闻id #}
53                 <input id="news_id" type="hidden" name="news_id" value="{{ context.news.id }}">
54 
55             <div class="form_group indent_group line_top">
56                 <input type="submit" value="确定" class="confirm">
57                 <input type="button" value="取消" class="cancel" onclick="cancel()">
58             </div>
59             </form>
60         </div>
61 
62 </body>
63 </html>

 

3、js代码

 1 function getCookie(name) {
 2     var r = document.cookie.match("\\b" + name + "=([^;]*)\\b");
 3     return r ? r[1] : undefined;
 4 }
 5 
 6 $(function(){
 7     $(".news_edit").submit(function (e) {
 8         e.preventDefault()
 9 
10         // 从表单中的隐藏input中读取news_id
11         var news_id = $('#news_id').val();
12 
13         // TODO 新闻编辑提交
14         $(this).ajaxSubmit({
15             beforeSubmit: function (request) {
16                 // 在提交之前,对参数进行处理
17                 for(var i=0; i<request.length; i++) {
18                     var item = request[i];
19                     if (item["name"] == "content") {
20                         item["value"] = tinyMCE.activeEditor.getContent()
21                     }
22                 }
23             },
24             url: "/admin/news_edit_detail/" + news_id,
25             type: "POST",
26             headers: {
27                 "X-CSRFToken": getCookie('csrf_token')
28             },
29             success: function (resp) {
30                 if (resp.errno == "0") {
31                     // 返回上一页,刷新数据
32                     location.href = document.referrer;
33                 } else {
34                     alert(resp.errmsg);
35                 }
36             }
37         })
38     })
39 })
40 
41 // 点击取消,返回上一页
42 function cancel() {
43     history.go(-1)
44 }

 

posted @ 2020-11-18 13:49  OnePunchCd  阅读(169)  评论(0编辑  收藏  举报