“校园舆情监测系统”网站设计及网页编辑总结

这是很早之前,13年左右在做舆情系统前端时写的一些总结,现在放到博客上,以防丢失。
后端使用Django Web 框架。
前端使用django 的python模板语言开发。

一、网页编程基础知识

<html>
<head>
<title>校园舆情监测系统</title>
</head>
<body>
<p>.......</p>
<a href="XXXX">YYYY</a>
</body>
</html>

1、<html>是网页的html代码的开始,在最后,有一个</html>与它相对应,表示代码的结束位置,网页的所有内容都出现在这两个标记(我们把用<>包含起来的这部分称之为标记或标签)之间。
2、<head>是网页头标记,也有一个</head>与之相对应,在<head></head>之间,有许多定义,下面一个是<title></title>,这是网页标题的标记,从上面的代码我们可以看到,网页的标题为“校园舆情监测系统”,要是我们想给页面取一个名称的话,我们就把要改的名称写到<title></title>之间。
3、<body></body>是网页正文的标记,基本上,网页所显示的内容全部都包含在这两个标记之间。现在我们看到的这两个标记之间什么也没有,就代表了网页是空的。
4、在<body></body>之间多了<p>.......</p>的代码,这里的<p></p>标签指的是段落,既是在网页上加上一段内容,可以有多个<p></p>标签存在。
5、<a ></a>标签是用来做链接的,其中XXXX是链接目标页面的网址,YYYY是我们在网页上看到的链接提示文字。
将包含这些内容的代码的文件以***.html命名,即将其生成html文件的形式保存,用IE或者Firefox浏览器打开,就可以看到所编辑的网页内容了。
这些事一个网页所需要的大概内容,但是在我们的系统中,利用纯html进行网站的开发是不行的,它一般用于静态网页编程比较多,但是我们需要一个动态的网站,所以以Django进行Web开发时,它要求我们的网站编程必须要与python结合起来,将原有的html用相应的python语句进行编写。

二、django中的模板

在开发一个网站的过程中,将页面的设计和Python的代码分离开会更干净简洁更容易维护。我们可以使用Django的 模板系统 (Template System)来实现这种模式。

1、定义基础模板

利用 base.html的模板来定义一个简单的HTML框架,我们将在网站的所有网页中使用。

{% load staticfiles %}
<DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head>{% block head %} {% endblock %}</head><body>{% block body %}{% endblock %}</body>
</html>

上面的代码既是整个系统网站的base.html的内容,我们可以看到他包含了以前所说的HTML网页编程的基础代码,利用base.html这一基础模板,在所有网页编写的过程中,我们只需调用该基础模板即可,无需再编写上述内容。
所有的 {% block %}标签告诉模板引擎,子模板可以重载这些部分,即所有的网页在编写时,必须要用{% block head %}等标签来代替<head>等标签,而{% endblock %}即表示</head>

2、网页编程

定义好基础模块后,就可以开始进行具体的网页编程了,一个网页应当以“{% extends "resources/base.html" %}”开头,表示这个网页需要调用resources文件夹中的base.html文件,也就是调用基础模板,下面以一个简单的例子来介绍:

{% extends "resources/base.html" %}
{% block head %}
{% load staticfiles %}
<link href={% static "css/style.css" %} rel="stylesheet" type="text/css" />{% endblock %}
{% block body %}
<div class="clear"></div>{%endblock%}

可以看到,由于继承了基础模板的内容,所以在网页中全部用python语句替换掉了之前的HTML语句,在这里出现了{%load staticfiles %}指的是用来调用名叫“static”文件夹中的内容,在“static”文件夹中包含了css、js、jpg等文件,都是用于修饰网页的文件,在这里,书写这一句语句意味着接下来的代码中可以随意的调取“static”文件夹里的任何文件或者文件夹,它都能够找得到。
“<link href={% static "css/style.css" %} rel="stylesheet" type="text/css" />”这里的{% XXXX %}表示的是一个变量,是可以更改的,这样的形式同样表示一个链接,但是它链接的是一个文件,即“style.css”这一css文件用于为HTML文档定义布局,CSS涉及字体、颜色、边距、高度、宽度、背景图像、高级定位等方面,每一个网页都需要它来进行调整和操作。
我们可以从上面的例子看出,每一个{% block XX%}开头的,都以{%endblock%}结束,他们中间包含具体内容,都是从base.html中继承来的,也就是说base.html中怎么定义,这里就要怎么写。然后网页的其他知识都是html网页通用知识,自己查查就可以了解。

3、视图和url

网页的内容编辑好以后,在django中,想要网页能够正常显示,必须要在视图(view.py)中定义并且配置url才算完成任务。在之后的调取数据库内容时,视图也起到了关键作用。
每个视图只负责以下两件事中的一件:返回一个 HttpResponse 对象,即返回所请求页面的内容,或者抛出一个异常,即返回Http异常,例如 Http404(页面不存在)。剩下的就由我们来实现了。视图可以读取数据库记录,或者不用。它可以使用一个模板系统或不用。它可以生成一个 PDF 文件,输出 XML ,即时创建 ZIP 文件,你可以使用你想用的任何 Python 库来做你想做的任何事。
一个视图就是Python的一个函数,我们需要使其成为一个django所能够识别的,实际上视图就是在你做好网页过后,定义在运行django时需要响应的网页,以及网页如何响应和响应的形式等。并且,视图同时也起着链接数据库的功能,我们只能在视图里定义将要链接的数据库内容,才能够将其响应到网页上,编辑视图所用到的都是Python库所能够实现的。
定义好视图过后,我们还需要一个详细描述的URL来显式的告诉django并且激活这个视图,才能够正常的显示。Url起着一个映射作用,使得模板、视图有效地链接起来。

4、读取数据库内容

在我们的系统中,最主要的功能就是读取数据库中所抓取的内容,并进行分析,使其能够有一定规律的显示在网页上,这个问题一开始很容易解决,但是,我们面临的关键问题是如何能够将数据进行过滤和筛选之后显示出来。于是,查阅了相关资料后有以下几点总结:
(1)排序:如果要将数据按照一定的限制进行排序的话,我们会用到order_by这一SQL语句,具体使用时在视图中:

def mainpage(request):tweet_form = open_newsforms.TweetForm()
open_news_article = Article.objects.order_by(‘pointnum')
return render(request,‘mainpage.html', { ‘tweet_form': tweet_form, ‘open_news_article': open_news_article})

上述语句中就是以数据库中“pointnum”这一字段进行排序的,“open_news_article”表示的是我们自己定义的名字,在网页中会用到,后面的“Article.objects.order_by(‘pointnum')”指的就是从数据库中article这一个表中读取数据,并以“pointnum”为标准进行排序。
(2)网页显示过滤
定义好视图以后在网页书写以下语句一实现数据库内容的显示:

{%for item in open_news_article|slice:":10"%}
<li>{{item.title|slice:"0:10"}} </li>          {%endfor%}

可以看到同样是{% %}括起来的语句,中间运用了一个for循环语句,从而将符合定义要求的数据从数据库中取出来,上面的代码表示了从open_news_article中取出item,然后利用过滤器(“|”)过滤,在网页上最终显示前十条记录。接下来<li>表示以列表的形式显示,两个<li>包含的内容指的是从名为title这一字段中取出记录,并同样利用过滤器进行过滤,显示出每条记录的前十个字。
(3)url正确配置
上述工作完成后,还需要正确的url配置才行,如下:
url(r'^mainpage','views.mainpage', name = 'mainpage'),
这里表明直接从视图响应mainpage.html这一网页,而不是调用这一网页,才能够实现网页的正常响应。

5、利用Plotkit画图

 开发舆情监测系统,这就需要网站上有相应的图标展示数据,因此,我们选择使用`Plotkit`这一开源软件进行图表的制作。`PlotKit`是一个纯`javascript`绘图工具包。它支持`HTML Canvas`和`Adobe SVG`。所以我们可以比较容易的利用它进行图表的绘制。`PlotKit`需要它自己的脚本文件,以及良好的`MochiKit`库,因此我们需要在网页中调用:
{% block head %}
{% load staticfiles %}
<script src="/static/MochiKit/MochiKit.js" type="text/javascript"></script>
<script src="/static/PlotKit/excanvas.js" type="text/javascript"></script>
<script src="/static/PlotKit/Base.js" type="text/javascript"></script>
<script src="/static/PlotKit/Layout.js" type="text/javascript"></script>
<script src="/static/PlotKit/Canvas.js" type="text/javascript"></script>
<script src="/static/PlotKit/SweetCanvas.js" type="text/javascript"></script>
{% endblock %}

接下来,如果想要图形出现,还需要添加一个<canvas>标签。并且为了标签能够正常工作,PlotKit要求将<canvas>标签放置在<DIV>标签里面:
<div><canvas id="graph" height="300" width="350"></canvas></div>
实际上,这一段代码就是生成一块画布,具体的图形都要在这块画布上进行操作,也就是说画图的代码应该是在上面这一

标签所包含的。
然后绘制图表:
<script type="text/javascript">
var options = {
"FFCanvasHTC": "/plotkit/ffcanvas.htc",
"colorScheme": PlotKit.Base.palette(PlotKit.Base.baseColors()[2]),
"padding": {left: 0, right: 0, top: 10, bottom: 50},
"xTicks": [{v:0, label:"“}, {v:1, label:"”},"barWidthFillFraction": 0.50,"yAxis": [0, 1500],};
function drawGraph() {var layout = new PlotKit.Layout("bar", options);
layout.addDataset("sqrt", [ [0,888], [1,777]]);
layout.evaluate();
var canvas = MochiKit.DOM.getElement("graph");
var plotter = new PlotKit.SweetCanvasRenderer(canvas, layout, options);plotter.render();}
MochiKit.DOM.addLoadEvent(drawGraph);
</script>   
  • 在这里,colorScheme控制图表的数据组件的颜色 - 例如线,棒图,饼图,反对背景。它接受一个定额在PlotKit.Base.palette阵列中的“MochiKit.Color.Color”
  • xTicks其实主要做两件事情。作为{v:X, label:""},对象的数组,它设置X轴的刻度值以及其关联的标签。
  • barWidthFillFraction决定每个X值,以及每个bar要消耗的空间量。因此,那些不超过1的数字所需的bar较少,而那些超过1则创建更广泛的bar
  • yAxis属性设置为Y轴的最小值和最大值,使用2个浮点数的数组。
    其实,整个绘制图表的过程就是javasript的操作,这样简便了我们的很多工作,只需调用现成的代码就可以随心所欲的绘制图表了,上面是一个柱形图的简单例子。

6、数据库搜索功能

Django有自带的搜索表单(form)功能,因此,我们可以在网页上通过以下代码定义一个搜索功能:

<div class="search"><form action="/search/" method="get"><input type="text" name="q"><input type="submit" value="Search"></form>
</div>

然后,在视图中编写代码进行搜索:

def search(request):if 'q' in request.GET and request.GET['q']:q = request.GET['q']article = Article.objects.order_by(title=q)return render_to_response('search_results.html', {'Article': article, 'query': q})
 这段代码判断我们将要搜索的`“q”`变量是否在数据库中指定的记录中,如果存在就将带有变量`“q”`的记录返回到搜索结果的网页上。

最后,制作一个搜索结果的网页并配置url

{% if article%}<ul>{% for item in article %}<li>{{ item.title }}</li>{% endfor %}</ul>
{% else %}<p>No books matched your search criteria.</p>
{% endif %}

这里运用一个if加上for循环的结构来读取数据库相应的数据来显示。而Url的配置同之前所述一样。

“校园舆情监测系统”网站设计及网页编辑总结相关推荐

  1. php外卖网站制作,php校园外卖订购系统网站设计

    课题名称 :校园外卖订购系统网站设计与开发 开发语言:php+mysql+apache 数据库:mysql 论文字数:2万字 具体要求:具体开发的功能: 后台;.管理员登陆,登陆账号,密码,注册 1. ...

  2. 互联网舆情监测系统的设计研究,TOOM舆情监测系统研究框架?

    舆情监测研究分析是指通过对社会公众对某个事件.话题.品牌.政策等的态度和情绪进行收集.处理.分析和评估,帮助政府.企业.媒体等利益相关者及时掌握公众的反应,做好应对危机和制定舆情管理策略的工作,互联网 ...

  3. java计算机毕业设计HTML5“牧经校园疫情防控网站”设计与实现MyBatis+系统+LW文档+源码+调试部署

    java计算机毕业设计HTML5"牧经校园疫情防控网站"设计与实现MyBatis+系统+LW文档+源码+调试部署 java计算机毕业设计HTML5"牧经校园疫情防控网站& ...

  4. HTML5期末大作业:订餐系统网站设计——绿色的网上订餐系统(23个页面) 网页作品 订餐系统网页设计作业模板 学生网页制作源代码下载

    HTML5期末大作业:订餐系统网站设计--绿色的网上订餐系统(23个页面) 网页作品 订餐系统网页设计作业模板 学生网页制作源代码下载 常见网页设计作业题材有 个人. 美食. 公司. 学校. 旅游. ...

  5. JAVA毕业设计HTML5“牧经校园疫情防控网站”设计与实现计算机源码+lw文档+系统+调试部署+数据库

    JAVA毕业设计HTML5"牧经校园疫情防控网站"设计与实现计算机源码+lw文档+系统+调试部署+数据库 JAVA毕业设计HTML5"牧经校园疫情防控网站"设计 ...

  6. 静态HTML网页设计作品:订餐系统网站设计——绿色的网上订餐系统(23个页面) 网页作品 订餐系统网页设计作业模板 学生网页制作源代码下载

    HTML5期末大作业:订餐系统网站设计--绿色的网上订餐系统(23个页面) 网页作品 订餐系统网页设计作业模板 学生网页制作源代码下载 常见网页设计作业题材有 个人. 美食. 公司. 学校. 旅游. ...

  7. Python+Django毕业设计校园舆情监控系统(程序+LW+部署)

    项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclis ...

  8. (附源码)SSM校园舆情监控系统JAVA计算机毕业设计项目

    项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclis ...

  9. 鸿蒙舆情监测系统源码分析——功能架构

    在前面几篇文章中,我们介绍了舆情监测系统的基本概念以及基本使用方法,接下来我们以鸿蒙舆情系统为例,从源码角度分析舆情监测系统的功能架构. 舆情监测系统的输入.处理和输出 输入 与一般的企业软件不同,舆 ...

最新文章

  1. 《概率机器人》里程计运动模型gmapping中代码解析
  2. 视频光流估计综述:从算法原理到具体应用
  3. Python使用matplotlib可视化树状图、层次聚类系统树图、树状图根据给定的距离度量将相似点分组在一起、并根据点的相似性将它们组织成树状图链接起来(Dendrogram)
  4. 运行从别处复制过来的linux可执行程序
  5. .net 2.0 点击按钮用js控制是否回发关于vs2005的webproject补丁
  6. java 基于tcp客户端服务端发送接收数据
  7. 面试官:什么是大事务?小林哥:就是 很大...的...事务??
  8. 吴恩达深度学习2.3练习_Improving Deep Neural Networks_Tensorflow
  9. 降序排序_排序简单,应用不易,使用Excel排序的几点建议
  10. 一些网址备忘 (在线剪辑音频、在线工具箱、全网音乐下载)
  11. 2020起重机械指挥模拟考试题库及起重机械指挥实操考试视频
  12. 牛客-二叉树层序遍历
  13. 用matlab从rosbag文件里读取rbg图片和depth图片
  14. [INSTALL_FAILED_DUPLICATE_PERMISSION perm=quicksdk_packageName.permission.JPUSH_MESSAGE pkg=com.shou
  15. nmn是什么公司产品,nmn对男性的影响,很是惊喜
  16. 业界首个Apache顶级微服务项目ServiceComb毕业,由华为捐赠
  17. 开单大师房产中介管理系统源码服务器及安装配置方式
  18. 串口硬盘GHOST死机
  19. 视频教程-全新大数据企业电商数据仓库项目实战教程-大数据
  20. (动工中)论文梳理 —— Joint 3D Proposal Generation and Object Detection from View Aggregation

热门文章

  1. linux下查看手机芯片,如何查看手机闪存型号
  2. 京东2019校园招聘笔试+面试(算法工程师岗位)
  3. python统计元音字母个数_计算Python中的元音(Counting vowels in python)
  4. Integral Object Mining via Online Attention Accumulation
  5. android翻盖手机双屏显示,使用双屏翻盖手机是一种怎样的体验?
  6. BZOJ 4327 【JSOI 2012】 玄武密码 AC自动机+dfs
  7. ubuntu20.04美化
  8. win10控制面板快捷键_在win10打开注册表编辑器的七种方法,你知道几种
  9. [Windows] Flash.Player|AX|PP|32.0.0.142 去广告 不跳更新版
  10. 升级Mountain Lion系统后因为 “来自身份不明开发者” 不能打开某些软件的解决方法