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

(1)common/zlqiniu.js

'use strict';

var zlqiniu = {
'setup': function (args) {
var domain = args['domain'];
var params = {
browse_button: args['browse_btn'],
runtimes: 'html5,flask,html4',
max_file_size: '500mb',
dragdrop: false,
chunk_size: '4mb',
uptoken_url: args['uptoken_url'],
domain: domain,
get_new_uptoken: false,
auto_start: true,
unique_names: true,
multi_selection: false,
filters: {
mime_types: [
{title: 'Image files', extensions: 'jpg,gif,png'},
{title: 'Video files', extensions: 'flv,mpg,mpeg,avi,wmv,mov,asf,rm,rmvb,mp4,mkv,m4v'}
]
},
log_level: 5,
init: {
'FileUploaded': function (up, file, info) {
if (args['success']) {
var success = args['success'];
file.name = domain + file.target_name;
success(up, file, info);
}
},
'Error': function (up, err, errTip) {
if (args['error']) {
var error = args['errors'];
error(up, err, errTip);
}
},
'UploadProgress': function (up, file) {
if (args['progress']) {
args['progress'](up, file);
}
},
'FilesAdded': function (up, files) {
if (args['fileadded']) {
args['fileadded'](up, files);
}
},
'UploadComplete': function () {
if (args['complete']) {
args['complete']();
}
}
}
};
for (var key in args) {
params[key] = args[key];
}
var uploader = Qiniu.uploader(params);
return uploader;
}
};

(2)common/views.py

首先安装:pip install qiniu

@bp.route('/uptoken/')
def uptoken():
#七牛的key
access_key = 'dsdvOjkbwerrraXH4Eh7xhJTxh5q7Y3uZ'
secret_key = 'nchG9ccJ_ergeaggmeOdBZXasvscaizanfs'
q = qiniu.Auth(access_key,secret_key)
#七牛存储空间名字
bucket = 'zhangderek'
token = q.upload_token(bucket)
#字典的key必须是'uptoken'
return jsonify({'uptoken':token})

(3)cms_banners.html

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

(4)cms_banners.html

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

(5)cms/js/banners.js

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

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

22.2.首页动态获取轮播图

(1)front/views.py

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

(2)front/index.html

 <!-- 轮播图-->
<div class="carousel-inner" role="listbox">
{% for banner in banners %}
{% if loop.first %}
<div class="item active">
{% else %}
<div class="item ">
{% endif %}
<a href="{{ banner.link_url }}">
<img src="{{ banner.img_url }}" alt="">
</a>
</div>
{% endfor %}
</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. C++构造函数和析构函数的调用顺序

    1.构造函数的调用顺序 基类构造函数.对象成员构造函数.派生类本身的构造函数 2.析构函数的调用顺序 派生类本身的析构函数.对象成员析构函数.基类析构函数(与构造顺序正好相反) 3.特例 局部对象,在 ...

  2. Django----初识视图与模板

    1.使用Bootstrap(一个优秀的前端框架,是基于html,css基础上进行开发,快速,便捷,提供非常多的空间并且都是附带源码)实现静态博客页面 bootstrap中文官网:www.bootcss ...

  3. eclipse的常用设置

    参考文档:https://www.cnblogs.com/maoniu602/p/3585049.html 版本和jdk的版本搭配问题 eclipse和JDK版本应搭配,而且,若使用32位则都使用32 ...

  4. adb deviecs时显示的emulator-5554如何删除

    https://zhidao.baidu.com/question/548320666.html

  5. maya cmds pymel 'ESC' 退出 while, for 循环

    maya cmds pymel 'ESC' 退出 while, for 循环 import maya.cmds as cmds cmds.progressWindow(isInterruptable= ...

  6. tomcat运行后提示Could not create the Java Virtual Machine.

    大致的问题是Java虚拟机(JVM)分配的内存大于系统可用内存,一开始去网上找了些资料,大多是都是说修改MyEclipse安装目录下的elicpse.ini文件中的内存大小.但我试了之后发现然并软,后 ...

  7. Mysql学习笔记03

    Mysql 的视图 1  view  在查询中,我们经常把查询结果当成临时表来看, view 是什么? View 可以看成一张虚拟的表,是表通过某种运算得到的有一个投影. 2 如何创建视图? 创建视图 ...

  8. 命令行 app

    [Getting Title at 38:53](http://click.pocoo.org/5/) 其实在 实际操作中 如果参数特别多的话,最好使用配置文件来操作,比如 yaml [YAML 语言 ...

  9. 逛公园 [NOIP2017 D1T3] [记忆化搜索]

    Description 策策同学特别喜欢逛公园.公园可以看成一张N个点M条边构成的有向图,且没有自环和重边.其中1号点是公园的入口,N号点是公园的出口,每条边有一个非负权值,代表策策经过这条边所要花的 ...

  10. myeclipse中的HTML页面在浏览器中显示为乱码

    myeclipse中的HTML页面在浏览器中显示为乱码 在通过myeclipse开发项目的过程中,如果用HTML页面书写前端,可能出现中文乱码现象,需要怎么解决呢?下面是我从网上搜的方法: 解决办法: ...