22.1.七牛js上传轮播图图片

(1)common/zlqiniu.js

  1. 'use strict';
  2.  
  3. var zlqiniu = {
  4. 'setup': function (args) {
  5. var domain = args['domain'];
  6. var params = {
  7. browse_button: args['browse_btn'],
  8. runtimes: 'html5,flask,html4',
  9. max_file_size: '500mb',
  10. dragdrop: false,
  11. chunk_size: '4mb',
  12. uptoken_url: args['uptoken_url'],
  13. domain: domain,
  14. get_new_uptoken: false,
  15. auto_start: true,
  16. unique_names: true,
  17. multi_selection: false,
  18. filters: {
  19. mime_types: [
  20. {title: 'Image files', extensions: 'jpg,gif,png'},
  21. {title: 'Video files', extensions: 'flv,mpg,mpeg,avi,wmv,mov,asf,rm,rmvb,mp4,mkv,m4v'}
  22. ]
  23. },
  24. log_level: 5,
  25. init: {
  26. 'FileUploaded': function (up, file, info) {
  27. if (args['success']) {
  28. var success = args['success'];
  29. file.name = domain + file.target_name;
  30. success(up, file, info);
  31. }
  32. },
  33. 'Error': function (up, err, errTip) {
  34. if (args['error']) {
  35. var error = args['errors'];
  36. error(up, err, errTip);
  37. }
  38. },
  39. 'UploadProgress': function (up, file) {
  40. if (args['progress']) {
  41. args['progress'](up, file);
  42. }
  43. },
  44. 'FilesAdded': function (up, files) {
  45. if (args['fileadded']) {
  46. args['fileadded'](up, files);
  47. }
  48. },
  49. 'UploadComplete': function () {
  50. if (args['complete']) {
  51. args['complete']();
  52. }
  53. }
  54. }
  55. };
  56. for (var key in args) {
  57. params[key] = args[key];
  58. }
  59. var uploader = Qiniu.uploader(params);
  60. return uploader;
  61. }
  62. };

(2)common/views.py

首先安装:pip install qiniu

  1. @bp.route('/uptoken/')
  2. def uptoken():
  3. #七牛的key
  4. access_key = 'dsdvOjkbwerrraXH4Eh7xhJTxh5q7Y3uZ'
  5. secret_key = 'nchG9ccJ_ergeaggmeOdBZXasvscaizanfs'
  6. q = qiniu.Auth(access_key,secret_key)
  7. #七牛存储空间名字
  8. bucket = 'zhangderek'
  9. token = q.upload_token(bucket)
  10. #字典的key必须是'uptoken'
  11. return jsonify({'uptoken':token})

(3)cms_banners.html

  1. <script src="https://cdn.staticfile.org/Plupload/2.1.1/moxie.js"></script>
  2. <script src="https://cdn.staticfile.org/Plupload/2.1.1/plupload.dev.js"></script>
  3. <script src="https://cdn.staticfile.org/qiniu-js-sdk/1.0.14-beta/qiniu.js"></script>
  4.  
  5. <script src="{{ static('common/zlqiniu.js') }}"></script>
  6. <script src="{{ static('cms/js/banners.js') }}"></script>

(4)cms_banners.html

  1. <div class="form-group">
  2. <label class="col-sm-2 control-label">图片</label>
  3. <div class="col-sm-7">
  4. <input type="text" class="form-control" name="img_url" placeholder="轮播图图片">
  5. </div>
  6. <button class="col-sm-2 btn btn-info" id="upload-btn">添加图片</button>
  7. </div>

(5)cms/js/banners.js

  1. $(function () {
  2. zlqiniu.setup({
  3. 'domain': 'http://p96dsgm7r.bkt.clouddn.com/',
  4. //上传图片的按钮
  5. 'browse_btn': 'upload-btn',
  6. //提交的url
  7. 'uptoken_url': '/c/uptoken/',
  8. 'success': function (up, file, info) {
  9. //上传成功后,显示图片的url
  10. var imageInput = $("input[name='img_url']");
  11. imageInput.val(file.name);
  12. }
  13. });
  14. });

现在点击“添加图片”,上传成功后,在图片的input框里面会显示图片的地址,并且图片存到你的七牛空间里面。

22.2.首页动态获取轮播图

(1)front/views.py

  1. @bp.route('/')
  2. def index():
  3. banners = BannerModel.query.order_by(BannerModel.priority.desc()).limit(4)
  4. context = {
  5. 'banners':banners
  6. }
  7. return render_template('front/front_index.html',**context)

(2)front/index.html

  1. <!-- 轮播图-->
  2. <div class="carousel-inner" role="listbox">
  3. {% for banner in banners %}
  4. {% if loop.first %}
  5. <div class="item active">
  6. {% else %}
  7. <div class="item ">
  8. {% endif %}
  9. <a href="{{ banner.link_url }}">
  10. <img src="{{ banner.img_url }}" alt="">
  11. </a>
  12. </div>
  13. {% endfor %}
  14. </div>

BBS论坛(二十二)的更多相关文章

  1. BBS论坛(十二)

    12.1.图形验证码生成 (1)utils/captcha/init.py import random import string # Image:一个画布 # ImageDraw:一个画笔 # Im ...

  2. [分享] IT天空的二十二条军规

    Una 发表于 2014-9-19 20:25:06 https://www.itsk.com/thread-335975-1-1.html IT天空的二十二条军规 第一条.你不是什么都会,也不是什么 ...

  3. Bootstrap <基础二十二>超大屏幕(Jumbotron)

    Bootstrap 支持的另一个特性,超大屏幕(Jumbotron).顾名思义该组件可以增加标题的大小,并为登陆页面内容添加更多的外边距(margin).使用超大屏幕(Jumbotron)的步骤如下: ...

  4. Web 前端开发精华文章推荐(HTML5、CSS3、jQuery)【系列二十二】

    <Web 前端开发精华文章推荐>2014年第一期(总第二十二期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各类能够提升网站用户体验的优秀 jQuery 插件,展示前沿的 HTML ...

  5. 二十二、OGNL的一些其他操作

    二十二.OGNL的一些其他操作 投影 ?判断满足条件 动作类代码: ^ $   public class Demo2Action extends ActionSupport {     public ...

  6. WCF技术剖析之二十二: 深入剖析WCF底层异常处理框架实现原理[中篇]

    原文:WCF技术剖析之二十二: 深入剖析WCF底层异常处理框架实现原理[中篇] 在[上篇]中,我们分别站在消息交换和编程的角度介绍了SOAP Fault和FaultException异常.在服务执行过 ...

  7. VMware vSphere 服务器虚拟化之二十二桌面虚拟化之创建View Composer链接克隆的虚拟桌面池

    VMware vSphere 服务器虚拟化之二十二桌面虚拟化之创建View Composer链接克隆的虚拟桌面池 在上一节我们创建了完整克隆的自动专有桌面池,在创建过程比较缓慢,这次我们将学习创建Vi ...

  8. Bootstrap入门(二十二)组件16:列表组

    Bootstrap入门(二十二)组件16:列表组 列表组是灵活又强大的组件,不仅能用于显示一组简单的元素,还能用于复杂的定制的内容. 1.默认样式列表组 2.加入徽章 3.链接 4.禁用的列表组 5. ...

  9. JAVA之旅(二十二)——Map概述,子类对象特点,共性方法,keySet,entrySet,Map小练习

    JAVA之旅(二十二)--Map概述,子类对象特点,共性方法,keySet,entrySet,Map小练习 继续坚持下去吧,各位骚年们! 事实上,我们的数据结构,只剩下这个Map的知识点了,平时开发中 ...

  10. 备忘录模式 Memento 快照模式 标记Token模式 行为型 设计模式(二十二)

    备忘录模式 Memento   沿着脚印,走过你来时的路,回到原点.     苦海翻起爱恨   在世间难逃避命运   相亲竟不可接近   或我应该相信是缘份   一首<一生所爱>触动了多少 ...

随机推荐

  1. centos6.9关闭防火墙

    /etc/init.d/iptables stop     临时关闭防火墙, chkconfig iptables off    永久关闭防火墙 查看防火墙状态  chkconfig --list i ...

  2. JMeter关联的几种方式总结案例

    1.接口响应结果,通常为HTML.JSON格式的数据,对于HTML的响应结果的提取,可以通过正则表达式,也可以通过XPath 来提取. 2.对于JSON格式的数据,可以通过正则表达式.JSON Ext ...

  3. Quartz+JAVA+Servlet实现任务调度系统(简洁)

    前言 该系统使用场景: 在12306上买了一张火车票,30分钟内需要支付(需要添加一个倒计时),30分钟还没有支付就请求取消订单的接口(自动根据url请求),如果支付了收到了支付的回调通知后,就删除计 ...

  4. Android中Adapter类的使用 “Adapter”

    Adapter用来把数据绑定到扩展了AdapterView类的视图组(例如:ListView或Gallery).Adapter负责创建代表所绑定父视图中的底层数据的子视图. 可以创建自己的Adapte ...

  5. PHP CURL获取页面内容输出例子

    使用PHP curl获取页面内容或提交数据,有时候希望返回的内容作为变量储存,而不是直接输出.这个时候就必需设置curl的CURLOPT_RETURNTRANSFER选项为1或true. 1.curl ...

  6. MFC实现红黑砖块

    MFC实现红黑砖块 题目 老题目了,给定w,h长宽的图,上面有颜色不同的瓷砖,黑和红,问从给的起点出发,只能走黑色瓷砖,能走多少块,可视化输出过程 思路 咋一看搜索水题,但是要用可视化,要用模板类,, ...

  7. MicroSoft CryptoAPI data/file encrypt/decrypt

    linux 用第三方库 Crypto++, 还未实战. CryptoAPI使用两种密钥:会话密钥与公共/私人密钥对.会话密钥使用相同的加密和解密密钥,这种算法较快,但必须保证密钥的安全传递.公共/私人 ...

  8. Visual Studio(VS)秘钥集合

    Visual Studio 2019 Pro :NYWVH-HT4XC-R2WYW-9Y3CM-X4V3Y

  9. Ubuntu出现卡logo、卡住、黑屏无法正常启动、屏幕和键盘背光无法调节等一系列问题?可能是NVIDIA显卡驱动没装好

    也不知道是幸运还是不幸,我从一开始接触ubuntu就遇到这一系列的问题, 而且一直没有一个彻底解决的办法,搞得我无比头疼,也害得我重装了无数遍系统... 国际惯例,只按照个人习惯和喜好来写,对某些人来 ...

  10. Linux神奇命令之---tar

    在生产中会常常用到压缩,解压缩,打包,解包等,这时候tar这个万能的小老弟就是是必不可少的了.linux中最流行的tar是麻雀虽小,五脏俱全,功能强大. tar命令可以为linux的文件和目录创建档案 ...