1、郑州大学毕业设计(论文)题 目: 基于 Django 的图片搜索网站 指导教师: 姜志明 职称: 副教授 学生姓名: 张晓媛 学号: 20092480144 专 业: 软件工程 院 ( 系 ) : 信息工程学院 完成时间: 2013 年 5 月 15 日 2013 年 05 月 15 日1基于 Django 的图片搜索网站摘要:基于用户对图片查找的需求所设计的一个网站。该网站可以进行一系列的查询,方便用户查找到自己感兴趣的图片。并通过上传可以增加图库里的图片,各个用户均可以分享整个图库里的所有图片,并通过收藏按钮可以在自己的图集中看到所喜欢的图片。方便用户收集喜欢的图片。另外,结合 Djang
2、o 这个 python 的 web 框架,搭建的平台简单安全,可移植性好。实现一系列的功能,例如登陆、注册、上传等。涉及图片搜索的功能有按关键字搜索,按色系搜索,按大小搜索等。对于用户来说,可以收藏喜欢的图片,并下载。各个用户的上传可以共享。此外,整个页面简单大方,使用 Bootstrap 风格,加上特有的轮播效果,展示图片效果更好,用户体验效果比较好。关键词: Python Django 图片搜索 Bootstrap 图像处理2Abstract: Based on the user needs to find the picture of a website. The site can do
3、 a series of queries for users to find their interesting pictures. Uploading pictures in the gallery, users can share all the pictures of the entire library, and the collection of a button can be concentrated in the Figure see the favorite pictures. It is convenient for users to collect pictures the
4、y like.In addition, combine with Django, which is a web framework of Python, can take an easy work to build the platform. Owing to the features of django, such as safety, good portability, I can write it easily. The website has a series of functions, such as login, register, upload, watch my albums,
5、 have fun and others. The functions of search involving search by keywords, by colors or by size. For the user, can collect favorite pictures, and download of it. Upload of each user can be shared. Furthermore, the entire page is simple and elegant. I use an open source package named bootstrap, the
6、style of it is simple and graceful, showing pictures better.Key Words: Python Django search bootstrap image processing3目录第一章 系统概述 .51.1 总体概述 .51.2 开发背景 .61.3 开发目的 .7第二章 系统分析 .82.1 技术可行性分析 .82.1.1 开发技术综述 .82.1.2 MySQL 数据库的选用 .122.1.3 技术可行性综述 .132.2 时间可行性 .132.3 系统需求分析 .132.3.1 系统开发运行环境 .132.3.2 系统功能概
7、述 .132.3.3 系统数据流图 .142.4 系统总体结构分析结论 .15第三章 系统设计 .163.1 数据库设计 .163.1.1 数据模型(ER 图) .163.1.2 数据库表及关系建立 .173.1.3 详细数据库结构设计 .183.2 系统概要设计 .203.2.1 功能模块设计 .203.2.2 系统界面设计 .22第四章 系统的详细设计与实现 .234.1 系统框架实现 .234.1.1 Model 层 .244.1.2 Template 层 .264.1.3 View 层的实现 .324.2 系统功能模块实现 .334.2.1 用户模块 .334.2.2 搜索模块 .36
8、4.2.3 随便看看模块 .374.3 系统设计与实现总结 .375.1 测试 概述 .385.1.1 软件测试的目的 .385.1.2 测试环境 .385.2 系统测试 .384结 论 .40致 谢 .41参考文献 .425当今世界,互联网技术快速发展,人们对互联网的要求越来越多,衍生出了一系列适应人们需求的网站。随着电子行业的快速发展,首当其冲的就是视觉上的另类感受。人们可以通过一系列的图像处理软件绘制自己想要的图片,可以通过图片表达一些情绪。比如,冷色调给人以沉稳,冷静的感觉,暖色调则给人一种热情,开朗的心情。纵观网络上,形形色色的图片数不胜数,如何分享它们,如何更快速地查找到自己所需要
9、的图片是一个很庞大的问题。因此,在此问题上,本人采用 python 的 django 框架搭建了一个图片搜索网站的系统,可以使用户将自己收藏的图片和他人分享,还可以搜索自己喜欢的图片并收藏,降低用户查找图片的难度,以达到更好的用户体验。第一章 系统概述1.1 总体概述当前高速发展的互联网技术已经成为人们快速获取,发布和传递消息的重要渠道,颠覆了传统的信息传播方式,突破了传统交流方式中的时间空间壁垒,极大的改变了人类从物质到精神,从形式到内容的种种活动。互联网上发布和获取信息都是通过网站来实现的。因而网站日益成为企事业单位信息化建设中不可避免的重要组成部分,越来越多的收到人们的重视。现在很多大学
10、及其众多部门都建立了自己的网站,希望通过互联网来实现宣传,交流以及资源的整合。基于网站的理念,本人设计并实现了这一图片搜索网站,该网站可以进行一系列的查询,方便用户查找到自己感兴趣的图片。并通过上传可以增加图库里的图片,各个用户均可以分享整个图库里的所有图片。而且学习 python 可以掌握一门脚本语言并结合 Django 这个 python 的 web框架,搭建的平台简单安全,可移植性好。在国内外研究系统中:国内类似的网站有百度的图片搜索,搜狗图片搜索,topit.me 的网站等;国外的类似网站有谷歌图片搜索;还有基于图片内容的搜索基于文本的图片搜索。61.2 开发背景网站是一种通讯工具,就
11、像布告栏一样,人们可以通过网站来发布自己想要公开的资讯信息,或者利用网站来提供相关的网络服务。下面介绍几种目前颇受关注的新技术:1. PHPPHP 即 Hypertext Preprocessor(超文本预处理器),它是当今 Internet上最为火热的脚本语言,其语法借鉴了 C、Java、PERL 等语言,但只需要很少的编程知识你就能使用 PHP 建立一个真正交互的 Web 站点。但 PHP 自身也存在缺点。首先,PHP 缺乏规模支持。其次,缺乏多层结构支持。对于大负荷站点,解决方法只有一个:分布计算。数据库、应用逻辑层、表示逻辑层彼此分开,而且同层也可以根据流量分开,群组成二维数组。而PH
12、P 则缺乏这种支持。再加上 PHP 提供的数据库接口支持不统一,这就使得它不适合运用在电子商务中。2. ASPASP 即 Active Server Pages,它是微软开发的一种类似 HTML(超文本标识语言)、Script(脚本)与 CGI(公用网关接口)的结合体,它允许用户使用许多已有的脚本语言编写 ASP 的应用程序。ASP 的最大好处是可以包含 HTML 标签,也可以直接存取数据库及使用无限扩充的 ActiveX 控件。通过使用 ASP 的组件和对象技术,用户可以直接使用 ActiveX 控件,调用对象方法和属性,以简单的方式实现强大的交互功能。但 ASP 技术也非完美无缺,由于它基
13、本上是局限于微软的操作系统平台之上,主要工作环境是微软的 IIS 应用程序结构,又因 ActiveX 对象具有平台特性,所以 ASP 技术不能很容易地实现在跨平台 Web 服务器上工作。3. JSPJSP 即 Java Server Pages,它是由 Sun Microsystem 公司于 1999 年 6 月推出的新技术,是基于 Java Servlet 以及整个 Java 体系的 Web 开发技术。JSP 和 ASP 在技术方面有许多相似之处,不过两者来源于不同的技术规范组织,以至 ASP 一般只应用于 Windows 平台,而 JSP 则可以在 85%以上的服务器上运行,而且基于 JS
14、P 技术的应用程序比基于 ASP 的应用程序易于维护和管7理,所以被许多人认为是未来最有发展前途的动态网站技术。4.Python Web 框架简单介绍两种框架:Django完美的文档,Django 的成功,我觉得很大一部分原因要归功于 Django 近乎完美的官方文档(包括 Django book) 。全套的解决方案,Django 象 Rails 一样,提供全套的解决方案(full-stack framework + batteries included) ,基本要什么有什么(比如:cache、session、feed、orm、geo、auth) ,而且全部 Django 自己造,开发网 站应
15、手的工具 Django 基本都给你做好了,因此开发效率是不用说的,出了问题也算好找,不在你的代码里就在 Django 的源码里。强大的 URL 路由配置,Django 让你可以设计出非常优雅的 URL,在 Django里你基本可以跟丑陋的 GET 参数说拜拜。自助管理后台,admin interface 是 Django 里比较吸引眼球的一项contrib,让你几乎不用写一行代码就拥有一个完整的后台管理界面。web.pyWeb.py 的设计理念力求精简(Keep it simple and powerful) ,总共就没多少行代码,也不像 Pylons 那样依赖大量的第三方模块,而是只提供的一
16、个框架所必须的一些东西,如:URL 路由、 Template、数据库访问,其它的就交给用户自己去做好了。一个框架精简的好处在于你可以聚焦在业务逻辑上,而不用太多的去关心框架本身或受框架的干扰,同时缺点也很明显,许多事情你得自己操刀上。1.3 开发目的看到一些图片搜索网站感觉非常有意思,比如百度图片,谷歌图片以及搜狗图片。对里面的机制很感兴趣,就想自己做一个类似的网站。专门的识图网站来满足一些用户的需求。而且学习 python 可以掌握一门脚本语言并结合 Django 这个 python 的 web框架,搭建的平台简单安全,可移植性好。8第二章 系统分析2.1 技术可行性分析2.1.1 开发技术
17、综述1. PythonPython 是一种面向对象、直译式电脑编程语言,具有近二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用缩进来定义语句块。Python 的官方解释器是 CPython,该解释器用 C 语言编写,是一个由社区驱动的自由软件,目前由 Python 软件基金会管理。Python 支持命令式程序设计、面向对象程序设计、函数式编程、面向侧面程序设计、泛型编程多种编程范式。Python 的设计哲学是“优雅” 、 “明确” 、 “简单” 。Pyt
18、hon 开发者有意让违反了缩进规则的程序不能通过编译,以此来强制程序员养成良好的编程习惯。例如: print “Hello, world!“Hello, world!2. DjangoDjango 是一个开放源代码的 Web 应用框架,由 Python 写成。采用了 MVC 的软件设计模式,即模型 M,视图 V 和控制器 C。Django 的主要目标是使得开发复杂的、数据库驱动的网站变得简单。Django 注重组件的重用性和“可插拔性”,敏捷开发和 DRY 法则(Dont Repeat Yourself) 。在 Django 中 Python 被普遍使用,甚至包括配置文件和数据模型。Djang
19、o 使你能够专注于 Web 应用上有 趣的关键性的东西。 为了达到这个目标,Django 提供了通用 Web 开发模式的高度抽象,提供了频繁进行的编程作业的快速解决方法,以及为“如何解决问题”提供了清晰明了的约定。 同时,9Django 尝试留下一些方法,来让你根据需要在 framework 之外来开发。Django 基本元素:|_ Site/|_ _init_.py|_ manage.py|_ urls.py|_ settings.py _init_.py :让 Python 把该目录当成一个开发包 (即一组模块)所需的文件。 这是一个空文件,一般你不需要修改它。 manage.py :一种
20、命令行工具,允许你以多种方式与该 Django 项目进行交互。 键入 python manage.py help,看一下它能做什么。 你应当不需要编辑这个文件;在这个目录下生成它纯是为了方便。5 settings.py :该 Django 项目的设置或配置。 查看并理解这个文件中可用的设置类型及其默认值。 urls.py:Django 项目的 URL 设置。 可视其为你的 django 网站的目录。 目前,它是空的。3. Django 式的 MVC 设计模式当前最为成功最为常用的设计架构之一当属 MVC-即模型-视图-控制器设计模式了。它将应用软件的各类职能很好的分离开来,Django 大致上
21、遵循这一设计理念。当然比起 Java 框架里的 MVC,它略微有些不同。1、模型(model)主要负责管理数据和核心的业务逻辑2、视图(view)负责将数据展示给用户3、控制器(Controller)接收用户输入并执行应用程序逻辑层面的工作在 很多领域这一思路非常高效,不过 Django 的设计者们不是简单的照搬这一模式,而且试图构建一个更适合 Web 应用程序开发的思路,因为 django 最初 是用在新闻出版类的网站上,对新闻事件的快速反应要求这套框架也必须“快” 、 “准” 、 “狠” 。于是最终一些和 MVC 不太相同的设计目标产生了:1、针对特定一组任务的代码必须更加好维护2、程序开发应该被赋予更多的灵活性,因为不同的视图、控制器层会连接到相同的模型层。这使得很多应用程序能够针对不同的客户使用不同的方法来