上午:
作业讲解
div的使用
bootstrap的调用
下午:
扒页面
jinja2模板继承
系统流程
return false的作用(见第九天)
模态框
一、复习
1、一个完整开发项目要素
1.MVC----控制器(逻辑端),视图(前端),模型(数据端)工作流
前端发起GET/POST请求,将数据传给逻辑端
逻辑端接收前端的数据(重点是接收处理表单的数据)
逻辑端通过接收的数据与数据端交互
数据端的工作就是增删改查
逻辑端将数据端处理好的数据传给指定的前端页面
前端页面接收逻辑端的数据,渲染页面展示给用户
2.session----会话保持,保持http状态
3.jQuery----实现异步请求,让MVC工作流更优雅
4.静态资源----渲染页面,让页面更好看,并通过基础模板,让html代码更优雅
2、作业
1.优雅的信息提示,操作成功时,给出提示框;操作失败时,显示失败信息
示例:
$(‘#updatebtn‘).click(function(){
var str = $(‘#updateForm‘).serialize()
$.post(‘/update‘,str,function(data){
data=JSON.parse(data)
if (data[‘code‘]==0){ // code为0表示操作成功
alert(data[‘result‘]) // 给出提示框
location.href=‘/user‘ // 页面跳转
}else{
$(‘#intro‘).text(data[‘errmsg‘]).fadeOut(2000) //显示失败信息两秒
setTimeout(function(){location.reload()},2000) //两秒后,刷新页面
}
})
return false
})sweetalert:更优雅的显示提示框
学习地址:http://demo.sc.chinaz.com/Files/DownLoad/webjs1/201410/jiaoben2855/
2.数据端数据更优雅的在前端显示
jinja2模板方法
{% if users %}
{%for user in users%}
<form action="/operation">
<tr>
<td class="text-center">{{user.name}}</td>
<td class="text-center">{{user.name_cn}}</td>
<td class="text-center">{{user.email}}</td>
<td class="text-center">{{user.mobile}}</td>
<td class="text-center">{{user.role}}</td>
{% if user.status == 0 %}
<td class="text-center">激活</td>
{% else %}
<td class="text-center">锁定</td>
{% endif %}
<td class="text-center">
<a class="btn btn-xs btn-info" href="/update?uid={{user[‘id‘]}}"> 更新 </a>
<a class="btn btn-xs btn-warning email" href="/modpasswd"> 修改密码 </a>
<a class="btn btn-xs btn-danger del" href="/delete?uid={{user[‘id‘]}}"> 删除 </a>
</td>
</tr>
</form>
{%endfor%}
{%endif%}jQuery拼字符串的方法
$(document).ready(function(){
$.getJSON(‘/userlist‘,function(data){
if (data[‘code‘] == 0){
var str1 = ‘‘
var str2 = ‘‘
var status = ‘‘
var role = ‘‘
data = data[‘result‘]
str1 =‘<tr>‘+
‘<td>‘+‘用户名‘+‘</td>‘+
‘<td>‘+‘中文名‘+‘</td>‘+
‘<td>‘+‘密码‘+‘</td>‘+
‘<td>‘+‘手机号‘+‘</td>‘+
‘<td>‘+‘邮箱‘+‘</td>‘+
‘<td>‘+‘角色‘+‘</td>‘+
‘<td>‘+‘状态‘+‘</td>‘+
‘<td>‘+‘操作‘+‘</td>‘+
‘</tr>‘
$(‘thead‘).html(str1)
for(var i=0;i<data.length;i++){
if (data[i][‘status‘] == 0){
status = ‘正常‘
}else{
status = ‘锁定‘
}
if (data[i][‘role‘] == ‘admin‘){
role = ‘管理员‘
}else{
role = ‘普通用户‘
}
str2 +=‘<tr>‘+
‘<td>‘+data[i][‘name‘]+‘</td>‘+
‘<td>‘+data[i][‘name_cn‘]+‘</td>‘+
‘<td>‘+data[i][‘password‘]+‘</td>‘+
‘<td>‘+data[i][‘mobile‘]+‘</td>‘+
‘<td>‘+data[i][‘email‘]+‘</td>‘+
‘<td>‘+role+‘</td>‘+
‘<td>‘+status+‘</td>‘+
‘<td>‘+
‘<a id="updatebtn" class="btn btn-xs btn-info" href="/update?name=‘+data[i][‘name‘]+‘">更新</a>‘+
‘<a id="deletebtn" class="btn btn-xs btn-danger" href="/delete?name=‘+data[i][‘name‘]+‘">删除</a>‘+
‘<a id="modpwdbtn" class="btn btn-xs btn-warning" href="/modpwd?name=‘+data[i][‘name‘]+‘">修改密码</a>‘+
‘</td>‘+‘</tr>‘
$(‘tbody‘).html(str2)
......二、div----层叠样式表单元的位置和层次
DIV元素是用来为HTML文档内大块的内容提供结构和背景的元素。
示例:
1、将两个div处在同一行
<!DOCTYPE> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> </head> <body> <!--不加特技--> <h1>不加特技</h1> <p> <div>I are ceo</div> <div>How are you</div> </p> <!--使用浮动float,可以再设置宽度、高度--> <h1>使用浮动</h1> <p> <div style="float:left;background:red">I are ceo</div> <div style="float:left;background:blue">How are you</div> </p> </body> </html>
效果图

2、一个div占固定的宽度;另一个div占剩余的宽度、用来适应窗口大小的变化或适应文本的变化
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title></title>
<style type="text/css">
* {
margin: 0;
padding: 0;
}
.left {
float: left;
width: 210px;
background-color: #ff0;
height: 150px;
}
.right {
background-color: #fc0;
height: 150px;
margin-left: 200px;
}
</style>
</head>
<body>
<!--不加特技-->
<h1>不加特技</h1>
<p>
<div>I are ceo</div>
<div>How are you</div>
</p>
<!--使用浮动float-->
<h1>使用浮动</h1>
<p>
<div class="left">I are ceo</div>
<div class="right">How are you</div>
</p>
</body>
</html>效果图
参考地址:http://sowsceo.blog.51cto.com/10841772/1843507
三、Bootstrap
Bootstrap是基于HTML5和CSS3开发的,它在jQuery的基础上进行了更为个性化和人性化的完善,形成一套自己独有的网站风格,并兼容大部分jQuery插件。
简言之,bootstrap就是定义好的css类,我们无需自己编写,直接调用即可。
示例一:
<html> <head> <link href="http://cdn.bootcss.com/bootstrap/3.3.0/css/bootstrap.min.css" rel="stylesheet"> </head> <body> <button type="button" class="btn btn-default">Default</button> <button type="button" class="btn btn-primary">Primary</button> <button type="button" class="btn btn-success">Success</button> <button type="button" class="btn btn-info">Info</button> <button type="button" class="btn btn-warning">Warning</button> <button type="button" class="btn btn-danger">Danger</button> <button type="button" class="btn btn-link">Link</button> <table class="table table-striped"> <tr class="active"> <td class="primary">primary</td></tr> <tr class="success"> <td class="success">success</td></tr> <tr class="warning"><td class="warning">warning</td></tr> <tr class="danger"> <td class="danger">danger</td></tr> </table> </body> </html>
效果图
示例二:
<html> <head> <link href="http://cdn.bootcss.com/bootstrap/3.3.0/css/bootstrap.min.css" rel="stylesheet"> </head> <body> <div class="row"> <div class="col-md-8" style="background-color:blue">.col-md-8</div> <div class="col-md-4"style="background-color:green">.col-md-4</div> </div> <div class="row"> <div class="col-md-4" style="background-color:red">.col-md-4</div> <div class="col-md-4" style="background-color:gray">.col-md-4</div> <div class="col-md-4"style="background-color:yellow">.col-md-4</div> </div> <div class="row"> <div class="col-md-6" style="background-color:black">.col-md-6</div> <div class="col-md-6" style="background-color:green">.col-md-6</div> </div> </body> </html>
注:每个div都被分为12等份,使用‘col-md-#‘来占用其中的#等份
效果图

学习地址:http://v3.bootcss.com/css/
四、jinja2模板继承
Jinja中最强大的部分就是模板继承。模板继承允许你构建一个包含你站点共同元素的基本模板“骨架”,并定义子模板可以覆盖的块。
基本模板(base.html)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang="en">
<html xmlns="
<head>
{% block head %}<!--block head-->
<link rel="stylesheet" href="style.css" />
<title>{% block title %}{% endblock %} - My Webpage</title><!--block title-->
{% endblock %}
</head>
<body>
<div id="content">{% block content %}{% endblock %}</div><!--block content-->
<div id="footer">
{% block footer %}<!--block footer-->
© Copyright 2008 by <a href=‘
{% endblock %}
</div>
</body>在本例中,{% block %}标签定义了四个字幕版可以填充的块。所有的block标签告诉模板引擎子模板可以覆盖模板中的这些部分。
其中title和content块为空块需要子模板填充,head和footer本身有内容,可以填充也可以继承。
子模板
{% extends "base.html" %}<!--extend标签指定基模板,必须放在第一行-->
{% block title %}Index{% endblock %}
{% block head %}
{{ super() }}<!--调用基模板部分自身内容和其中的子模版内容-->
<style type="text/css">
.important { color: #336699; }
</style>
{% endblock %}
{% block content %}
<h1>Index</h1>
<p class="important">
Welcome on my awesome homepage.
</p>
{% endblock %}注:成功运行后将把子模板中定义的各个子块填充到基本模板后输出。特别注意的是{{super()}}的意思是不仅用子模板中的内容填充,也要调用基本模板中的部分内容。而该子模板并未定义footer块的内容,因此在输出的结果中footer块将保留基本模板中的内容。
调用子模板时的html代码
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang="en">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<link rel="stylesheet" href="style.css" />
<title>Index - My Webpage</title>
<style type="text/css">
.important { color: #336699; }
</style>
</head>
<body>
<div id="content">
<h1>Index</h1>
<p class="important">
Welcome on my awesome homepage.
</p>
</div>
<div id="footer">
© Copyright 2008 by <a href=‘http://domain.invalid/‘>you</a>.
</div>
</body>重复调用相同块
<title>{% block title %}{% endblock %}</title>
<h1>{{ self.title() }}</h1><!--再次调用了block title-->
{% block body %}{% endblock %}注:如果你想要多次打印一个块,无论如何你可以使用特殊的‘self‘变量并调用与块同名的函数
学习地址:http://docs.jinkan.org/docs/jinja2/templates.html#template-inheritance
五、模态框
<div class="modal fade" id=‘updateModel‘>
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>
<h4 class="modal-title">更新</h4>
</div>
<div class="modal-body">
<p>test…</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">取消</button>
<button type="button" class="btn btn-primary">确认</button>
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div><!-- /.modal -->
<script>
$(‘.update‘).click(function(){
$(‘#updateModel‘).modal(‘show‘)
})
</script>效果图

学习地址:http://v3.bootcss.com/javascript/#modals
原文地址:http://yaoliang83.blog.51cto.com/10991353/1846385