1. 接下来就是将后台视图与前端页面结合起来了完成后台系统了.
    实现前端展示用户列表
    1.先在base.html代码中把模版中Dashboard下面的内容清空,如下:

  1. 具体删除哪些html代码,自己找吧.
    2.我们看到Dashboard和空白区域,这里两块内容都应该是可以更改的.
    所以还要编辑这两块区域,给这两块区域加上{% block %}
    编辑base.html,更改内容
  1. <div class="col-sm-9 col-sm-offset-3 col-md-10 col-md-offset-2 main">
  2. <!--<h1 class="page-header">Dashboard</h1>-->
  3. <h1 class="page-header">{% block page-header %}Your page header{% endblock %}</h1>
  4. {% block page-content %}
  5. putyour content here
  6. {% endblock %}
  7. </div>
  1. 这样我们就可以在继承base.html文件的时候,重写这两块的内容了.
    3.更改crm/dashboard.html内容如下
  1. {% extends 'base.html'%}
  2. {% block page-header %}
  3. Crm Dashboard
  4. {% endblock %}
  1. 访问如图:

  1. 4.创建一个新的html,新的URL,新的views用来展示用户列表
    crm/urls.py
  1. from django.conf.urls import url
  2. from crm import views
  3.  
  4. urlpatterns = [
  5. url(r'^$', views.dashboard),
  6. url(r'^customers/$', views.customers),
  7. ]
  1. crm/views.py
  1. from django.shortcuts import render
  2.  
  3. # Create your views here.
  4.  
  5. def dashboard(request):
  6. return render(request,'crm/dashboard.html')
  7. def customers(request):
  8. return render(request,'crm/customers.html')
  1. 创建templates/crm/customers.html
  1. {% extends 'base.html' %}
  2. {% block page-header %}
  3. Customers List
  4. {% endblock %}
  5. {% block page-content %}
  6.  
  7. {% endblock%}
  1. 完成后我们来看下效果:

  1. 我们显示用户的列表的时候,使用table比较合适.所以我们可以从bootstrap上直接下表格的代码,让我们的页面上去更为美观.
    访问www.bootcss.com,在全局CSS样式中找到表格项,然后找到你认为好看的表格样式,复制代码,在加上自己的table,我选中的代码如下:
  1. {% extends 'base.html' %}
  2. {% block page-header %}
  3. Customers List
  4. {% endblock %}
  5. {% block page-content %}
  6. <table class="table table-hover">
  7. <thead>
  8. <tr>
  9. <th>ID</th>
  10. <th>QQ</th>
  11. <th>姓名</th>
  12. <th>渠道</th>
  13. <th>咨询课程</th>
  14. <th>课程类型</th>
  15. <th>客户备注</th>
  16. <th>状态</th>
  17. <th>课程顾问</th>
  18. <th>日期</th>
  19. </tr>
  20. </thead>
  21. <tbody>
  22. {% for coustomer in customer_list %}
  23. <tr>
  24. <td>{{coustomer.id}}</td>
  25. <td>{{coustomer.qq}}</td>
  26. <td>{{coustomer.name}}</td>
  27. <td>{{coustomer.source}}</td>
  28. <td>{{coustomer.course}}</td>
  29. <td>{{coustomer.course_type}}</td>
  30. <td>{{coustomer.consult_memo}}</td>
  31. <td>{{coustomer.status}}</td>
  32. <td>{{coustomer.consultant}}</td>
  33. <td>{{coustomer.date}}</td>
  34. </tr>
  35. {% endfor %}
  36. </tbody>
  37. </table>
  38. {% endblock%}

coustomer.html

  1. 浏览器截图:

  1. 然后我们更改crm/views.py如下:
  1. from django.shortcuts import render
  2. from crm import models # 引入models
  3. # Create your views here.
  4.  
  5. def dashboard(request):
  6. return render(request,'crm/dashboard.html')
  7. def customers(request):
  8. customer_list = models.Customer.objects.all() # 获取纪录列实例列表
  9. # print(customer_list)
  10. return render(request,'crm/customers.html',{'customer_list':customer_list}) # 传给前端列表
  1. 我们访问http://127.0.0.1:8000/crm/customers/,结果如图:

  1. 我们看后台查询出的结果已经展示到前端页面上了,接下来 就是一些美观上的处理了.
    美观上的处理大部分都是通过修改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>
  2.  
  3. 对于客户备注内容显示过多的问题用一个Django模版语法中的truncatewords标签
    <td>{{coustomer.consult_memo}}</td> 改成 <td>{{coustomer.consult_memo|truncatechars:20}}</td>
  4.  
  5. 我们在看下更改后的浏览效果:

  1. 下面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样式

  1. 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>
  2.  
  3. 4. 访问http://127.0.0.1:8000/crm/customers/,结果如图:

  1.  

python2.0_s12_day19_前端结合后端展示客户咨询纪录的更多相关文章

  1. python2.0_s12_day19_前端模版使用

    Django中引用bootstrap实现在前端可以创建客户信息,可以修改客户信息我们需要设计一个前端用户交互系统.我们在设计之前,讨论一些需求:前端实现:1. 不同角色的用户,看到的东西是不一样的 销 ...

  2. 巨蟒django之CRM2 展示客户列表&&分页

    1.展示客户列表 点击画红线中的views,进入下列界面 路径的查找顺序:应该是先查找外层的templates里边的html,然后查找app里边的templates 另一个会按照app的顺序进行寻找, ...

  3. [转载]Web前端和后端之区分,以及面临的挑战

    原文地址:Web前端和后端之区分,以及面临的挑战[转]作者:joyostyle 在我们实际的开发过程中,我们当前这样定位前端.后端开发人员. 1)前端开发人员:精通JS,能熟练应用JQuery,懂CS ...

  4. Web前端和后端之区分,以及…

    原文地址:Web前端和后端之区分,以及面临的挑战[转]作者:joyostyle 在我们实际的开发过程中,我们当前这样定位前端.后端开发人员. 1)前端开发人员:精通JS,能熟练应用JQuery,懂CS ...

  5. [转载]Web前端和后端之区分,以及面临的挑战【转】

    原文地址:Web前端和后端之区分,以及面临的挑战[转]作者:joyostyle 在我们实际的开发过程中,我们当前这样定位前端.后端开发人员. 1)前端开发人员:精通JS,能熟练应用JQuery,懂CS ...

  6. Spring MVC之中前端向后端传数据

    Spring MVC之中前端向后端传数据和后端向前端传数据是数据流动的两个方向, 在此先介绍前端向后端传数据的情况. 一般而言, 前端向后端传数据的场景, 大多是出现了表单的提交,form表单的内容在 ...

  7. 看完让你彻底理解 WebSocket 原理,附完整的实战代码(包含前端和后端)

    1.前言 最近有同学问我有没有做过在线咨询功能.同时,公司也刚好让我接手一个 IM 项目.所以今天抽时间记录一下最近学习的内容.本文主要剖析了 WebSocket 的原理,以及附上一个完整的聊天室实战 ...

  8. bootstrap table + spring + springmvc + mybatis 实现从前端到后端的表格分页

    1.使用准备 前台需要的资源文件,主要有Bootstrap3相关css.js以及bootstrap Table相关css.js: <-- 样式 --> <link rel=" ...

  9. java前端与后端怎么选??

    想做这个行业,就应该了解职能以及技能需求,这样学习才能更高效.我知道一些刚刚入行的小伙伴不清楚前端.后端.到底指的是什么?两者直接的区别 前端开发 前端开发主要涉及网站和App,用户能够从浏览器上或A ...

随机推荐

  1. Django 用ModelForm批量保存form表单(非常实用的方法) mfor_verity项目

    1.先看一下 Model 非常多 from django.db import models from users.models import UserProfile # Create your mod ...

  2. sqlserver 针对预处理sql传入参数的处理方式

    在编写sql中,经常需要对sql进行预处理,动态拼接字符串,那么要获取在这预处理之后返回的的某个值并且赋值,传入参数的语法 USE [OA] GO /****** Object: StoredProc ...

  3. C#中关于用户名和密码的验证问题。

    本次练习的目的是使用LinQ to XML,正则表达式,明天在这个基础上练习使用序列化和反序列化,继续加点儿小功能. 首先,这是一个窗体程序,设计如下: 存放用户名和密码的XML如下: 实现的代码如下 ...

  4. string.h中的库函数

    虽然面试的时候,都会叫你不使用c库函数,自己完成某某函数的编写,但是库函数毕竟更让人信赖,我们没有任何理由怀疑库函数而使用自己的版本.不过当做练习,自己还是可以实现一下的.这里记录一下5th c pr ...

  5. JAVA-JAVA、JavaScript、JavaWeb的关系

    相关资料:1.http://www.cnblogs.com/youring2/archive/2013/06/06/3120645.html2.https://jingyan.baidu.com/ar ...

  6. 浅谈C#委托和事件【转】

    委托给了C#操作函数的灵活性,我们可使用委托像操作变量一样来操作函数,其实这个功能并不是C#的首创,早在C++时代就有函数指针这一说法,而在我看来委托就是C#的函数指针,首先先简要的介绍一下委托的基本 ...

  7. OpenFileDialog 打开文件

    OpenFileDialog ofd = new OpenFileDialog(); ofd.Title = "选择导入的文件"; ofd.FilterIndex = 1; ofd ...

  8. java获取当月的第一天和最后一天,获取本周的第一天和最后一天

    /** * 获取指定日期所在周的第一天和最后一天,用下划线连接 * @param dataStr * @return * @throws ParseException */ public static ...

  9. Hbase 学习(二)各种filter

    各种filter 今天的主题是Filter,hbase客户端查询的时候,自定义查询filter. 直接上例子吧,不多说别的了,第一个例子是RowFilter的. Scan scan = new Sca ...

  10. hadoop集群运行dedup实现去重功能

    一.配置开发环境1.我们用到的IDE是eclipse.要用它进行hadoop编程,要给eclipse安装hadoop自带的插件.(有的版本以源码提供插件,需要用户根据需要自己编译)2.用到的eclip ...