python2.0_s12_day19_前端结合后端展示客户咨询纪录
接下来就是将后台视图与前端页面结合起来了完成后台系统了.
实现前端展示用户列表
1.先在base.html代码中把模版中Dashboard下面的内容清空,如下:
具体删除哪些html代码,自己找吧.
2.我们看到Dashboard和空白区域,这里两块内容都应该是可以更改的.
所以还要编辑这两块区域,给这两块区域加上{% block %}
编辑base.html,更改内容
<div class="col-sm-9 col-sm-offset-3 col-md-10 col-md-offset-2 main">
<!--<h1 class="page-header">Dashboard</h1>-->
<h1 class="page-header">{% block page-header %}Your page header{% endblock %}</h1>
{% block page-content %}
putyour content here
{% endblock %}
</div>
这样我们就可以在继承base.html文件的时候,重写这两块的内容了.
3.更改crm/dashboard.html内容如下
{% extends 'base.html'%}
{% block page-header %}
Crm Dashboard
{% endblock %}
访问如图:
4.创建一个新的html,新的URL,新的views用来展示用户列表
crm/urls.py
from django.conf.urls import url
from crm import views urlpatterns = [
url(r'^$', views.dashboard),
url(r'^customers/$', views.customers),
]
crm/views.py
from django.shortcuts import render # Create your views here. def dashboard(request):
return render(request,'crm/dashboard.html')
def customers(request):
return render(request,'crm/customers.html')
创建templates/crm/customers.html
{% extends 'base.html' %}
{% block page-header %}
Customers List
{% endblock %}
{% block page-content %} {% endblock%}
完成后我们来看下效果:
我们显示用户的列表的时候,使用table比较合适.所以我们可以从bootstrap上直接下表格的代码,让我们的页面上去更为美观.
访问www.bootcss.com,在全局CSS样式中找到表格项,然后找到你认为好看的表格样式,复制代码,在加上自己的table,我选中的代码如下:
{% extends 'base.html' %}
{% block page-header %}
Customers List
{% endblock %}
{% block page-content %}
<table class="table table-hover">
<thead>
<tr>
<th>ID</th>
<th>QQ</th>
<th>姓名</th>
<th>渠道</th>
<th>咨询课程</th>
<th>课程类型</th>
<th>客户备注</th>
<th>状态</th>
<th>课程顾问</th>
<th>日期</th>
</tr>
</thead>
<tbody>
{% for coustomer in customer_list %}
<tr>
<td>{{coustomer.id}}</td>
<td>{{coustomer.qq}}</td>
<td>{{coustomer.name}}</td>
<td>{{coustomer.source}}</td>
<td>{{coustomer.course}}</td>
<td>{{coustomer.course_type}}</td>
<td>{{coustomer.consult_memo}}</td>
<td>{{coustomer.status}}</td>
<td>{{coustomer.consultant}}</td>
<td>{{coustomer.date}}</td>
</tr>
{% endfor %}
</tbody>
</table>
{% endblock%}
coustomer.html
浏览器截图:
然后我们更改crm/views.py如下:
from django.shortcuts import render
from crm import models # 引入models
# Create your views here. def dashboard(request):
return render(request,'crm/dashboard.html')
def customers(request):
customer_list = models.Customer.objects.all() # 获取纪录列实例列表
# print(customer_list)
return render(request,'crm/customers.html',{'customer_list':customer_list}) # 传给前端列表
我们访问http://127.0.0.1:8000/crm/customers/,结果如图:
我们看后台查询出的结果已经展示到前端页面上了,接下来 就是一些美观上的处理了.
美观上的处理大部分都是通过修改css,js来实现的.
首先我们先上图中的两个点优化
显示"课程类型"和"状态"字段时都是英文,我们知道这两个字段models中都是有选择的,(key,value)的形式.
数据库存的key(英文),不存value(中文),通过后台展示的时候可以
把 <td>{{coustomer.course_type}}</td> 改成: <td>{{coustomer.get_course_type_display}}</td>
把 <td>{{coustomer.status}}</td> 改成: <td>{{coustomer.get_status_display}}</td> 对于客户备注内容显示过多的问题用一个Django模版语法中的truncatewords标签
把 <td>{{coustomer.consult_memo}}</td> 改成 <td>{{coustomer.consult_memo|truncatechars:20}}</td> 我们在看下更改后的浏览效果:
下面Alex分享了一个前端应用技巧.
我们看状态分为四种:
('signed',u"已报名"),('unregistered',u"未报名"),('graduated',u"已毕业"),('drop-off',u"退学")
现在就几条纪录,假如几百条纪录,我想让每一种状态的背景颜色不一样.怎样实现
我们的思路:
首先是定义四种同的样式,然后对每一条纪录判读,每条纪录会在前端 if ... elif...elif...else 经历四次.
老师的思路:
同样创建四种样式,不同的是四种css样式的名称就分别以状态的key命名
.signed{} .unregistered{} .graduated{} .drop-off{}
同样是循环,不同的是,不用if...else...直接定义样式名
代码如下:
1.添加四种css样式
2. 更改base.html,引入自定义的css样式文件
找到
<link href="/static/bootstrap/css/dashboard.css" rel="stylesheet">
在下面加一行如下内容:
<link href="/static/bootstrap/css/custom.css" rel="stylesheet">
3.更改customers.html文件
把 <td>{{coustomer.get_status_display}}</td> 改成 <td class ="{{ coustomer.status }}"> {{ coustomer.get_status_display }} </td> 4. 访问http://127.0.0.1:8000/crm/customers/,结果如图:
python2.0_s12_day19_前端结合后端展示客户咨询纪录的更多相关文章
- python2.0_s12_day19_前端模版使用
Django中引用bootstrap实现在前端可以创建客户信息,可以修改客户信息我们需要设计一个前端用户交互系统.我们在设计之前,讨论一些需求:前端实现:1. 不同角色的用户,看到的东西是不一样的 销 ...
- 巨蟒django之CRM2 展示客户列表&&分页
1.展示客户列表 点击画红线中的views,进入下列界面 路径的查找顺序:应该是先查找外层的templates里边的html,然后查找app里边的templates 另一个会按照app的顺序进行寻找, ...
- [转载]Web前端和后端之区分,以及面临的挑战
原文地址:Web前端和后端之区分,以及面临的挑战[转]作者:joyostyle 在我们实际的开发过程中,我们当前这样定位前端.后端开发人员. 1)前端开发人员:精通JS,能熟练应用JQuery,懂CS ...
- Web前端和后端之区分,以及…
原文地址:Web前端和后端之区分,以及面临的挑战[转]作者:joyostyle 在我们实际的开发过程中,我们当前这样定位前端.后端开发人员. 1)前端开发人员:精通JS,能熟练应用JQuery,懂CS ...
- [转载]Web前端和后端之区分,以及面临的挑战【转】
原文地址:Web前端和后端之区分,以及面临的挑战[转]作者:joyostyle 在我们实际的开发过程中,我们当前这样定位前端.后端开发人员. 1)前端开发人员:精通JS,能熟练应用JQuery,懂CS ...
- Spring MVC之中前端向后端传数据
Spring MVC之中前端向后端传数据和后端向前端传数据是数据流动的两个方向, 在此先介绍前端向后端传数据的情况. 一般而言, 前端向后端传数据的场景, 大多是出现了表单的提交,form表单的内容在 ...
- 看完让你彻底理解 WebSocket 原理,附完整的实战代码(包含前端和后端)
1.前言 最近有同学问我有没有做过在线咨询功能.同时,公司也刚好让我接手一个 IM 项目.所以今天抽时间记录一下最近学习的内容.本文主要剖析了 WebSocket 的原理,以及附上一个完整的聊天室实战 ...
- bootstrap table + spring + springmvc + mybatis 实现从前端到后端的表格分页
1.使用准备 前台需要的资源文件,主要有Bootstrap3相关css.js以及bootstrap Table相关css.js: <-- 样式 --> <link rel=" ...
- java前端与后端怎么选??
想做这个行业,就应该了解职能以及技能需求,这样学习才能更高效.我知道一些刚刚入行的小伙伴不清楚前端.后端.到底指的是什么?两者直接的区别 前端开发 前端开发主要涉及网站和App,用户能够从浏览器上或A ...
随机推荐
- SharePoint自动化系列——通过PowerShell创建SharePoint Web
转载请注明出自天外归云的博客园:http://www.cnblogs.com/LanTianYou/ 代码如下(保存到本地ps1文件中,右键run with PowerShell即可): Add-PS ...
- 使用 FreeRTOS 时注意事项总结(基础篇教程完结)
以下转载自安富莱电子: http://forum.armfly.com/forum.php FreeRTOS 的初始化流程推荐的初始化流程如下,本教程配套的所有例子都是采用的这种形式,当然,不限制必须 ...
- js中定义属性和变量
//定义数组 var arr = []; //定义对象 var obj = {}; //定义正则表达式 var reg = /../;
- ASP.new GridView获取隐藏列值的几种方法
解决方法: 原文来自:http://www.tzwhx.com/NewShow/newBodyShow/控件_32933.html 作者:lerit 1.隐藏列前获取数据 看这样一个例子(以下均以此 ...
- C语言 · 身份证号码升级
算法提高 身份证号码升级 时间限制:1.0s 内存限制:256.0MB 问题描述 从1999年10月1日开始,公民身份证号码由15位数字增至18位.(18位身份证号码简介).升级方法 ...
- Android 自定义Adapter实现多视图Item的ListView
自定义Adapter实现多视图Item的ListView http://www.devdiv.com/adapter_item_listview-blog-20-7539.html 1.原理分析 Ad ...
- cocos2dx3.2利用ProgressTimer组合成评分控件
一.制作背景 如今非常多游戏或者应用须要评分,就是一般来说满分10分,一般用星星来表示. 那么cocos2dx里面怎样制作评分这种控件呢? 我的打算是进度条组合成即可了. 二.材料准备 如上图所看到的 ...
- firewalled centos7
zone绑定网卡 firewall-cmd --zone=internal --add-interface=ens192 --permanent firewall-cmd --permanent -- ...
- RTMP流媒体播放过程:握手,建立连接,建立流,播放
本文讲述从打开一个RTMP流媒体到视音频数据开始播放的整个过程. 播放一个流媒体有两个前提步骤: 第一步,建立一个网络连接(NetConnection): 第二步,建立一个网络流(NetStream) ...
- 网络配置br0 brtcl
1.brctl addbr br0 如果根据第3步,那这里不用写 2.brctl addif br0 eth0 如果第3步写了,这里也不用 这时候用ssh应该会断网... 3.设置 ...