基于Django和Python的Web开发


电脑编程技巧与维护基于Django和Python的Web开发。王冉阳(中同地质大学(北京),北京100083)摘要:随着Web技术的发展和软件工程的日益成熟,人们逐渐提出敏捷开发的要求。但是传统的Web框架像Struts,Spring,.NET等由于其复杂性而很难满足人们的要求,于是逐渐出现一些敏捷性Web框架。Django是使用Python开发的优秀Web框架,作为一款开源的敏捷开发框架,受到越来越多的人的关注。本文主要介绍了Web框架Django和Python语言的特点,并以一个简易的博客系统的创建,介绍Django和Python在Web开发中的应用。关键词:Django;Python;Web开发;Blog;开源WebDevelopmentbasedonDjangoandPythonWANGRanyang(ChinaUniversityofGeosciences(Beijing),Beijing100083)Abstract:WiththedevelopmentofWebtechnologyandsoftwareengineering,peoplegraduallyputforwardtherequirementofagiledevelopment.TraditionalwebframeworksuchasStruts,Spring,.NET,andsoon,cannotmeettherequirementbecauseoftheircomplexity.DjangoisexcellentWebframeworkdevelopedwithPython.Asaopensourceagileframework,hasattractedmoreandmoreattentions.ThisarticleintroducedthefeaturesofDjangoandPython.Throughthecreationofasimpleblogsystem,weintroducethethedevelopmentofWebapplicationsbasePythonandDjango.Keywords:Django;Python;Webdevelopment;Blog;OpenSourcel引言因特网的发展使得Web大行其道,当今几乎所有的企业信息化软件以及部分个人桌面都采用了Web界面。Web界面已成为和普通GUI并行的一种选择,这种变化使得对Web开发框架的选择变得极为重要。在众多的Web开发框架中。Django,附h佣——款开源的Web开发框架以其优秀的性能和快捷的开发正越来越引起人们的重视。2PythonPython是一种简单易学、功能强大的编程语言,它有高效率的高层数据结构,简单而有效地实现面向对象编程。Python简洁的语法和对动态输入的支持,再加上解释性语言的本质,使得它在大多数平台卜的许多领域都是一个理想的脚本语言,特别适用于陕速的应用程序开发。2.1简单Python是一种代表简单主义思想的语言。阅读一个良好的Python程序就感觉像是在读英语一样,Python的这种伪代码本质是它最大的优点之一,它使你能够专注于解决问题而不是去搞明白语言本身。2.2易学Python有极其简单的语法。极其容易卜手开源:Python是FLOSS(自由/开放源码软件)之一。简单地说,可以自由地发布这个软件的拷贝、阅读它的源代码、对它做改动、把它的一部分用于新的自由软件中。2.3高层语言本文收稿日期:2008年10月29日一56一当用Python语言编写程序的时候,无需考虑诸如如何管理程序使用的内存一类的底层细节。2.4可移植性由于它的开源本质,Python已经被移植在许多平台E(经过改动使它能够工作在不同平台上)。如果小心地避免使用依赖于系统的特性,那么所有Python程序无需修改就可以在下述任何平台上面运行。这些平台包括Linux、Windows、FrecBSD、Macintosh、Solaris、OS/2、Amiga、AROS、AS/400、BeOS、OS/390、z,OS、PalmOS、QNX、VMS、Psion、AcomRISCOS、Vx-Works、PlayStation、SharpZaurus、WindowsCE甚至还有PocketPC。2.5解释性而Python语言写的程序不需要编译成二进制代码。可以直接从源代码运行程序。在计算机内部,Python解释器把源代码转换成称为字节码的中问形式,然后再把它翻译成计算机使用的机器语言并运行。事实E,由于不再需要担心如何编译程序,如何确保连接转载正确的库等等,所有这一切使得使用Python更加简单。只需要把Python程序拷贝到另外一台计算机上,它就町以1二作了,这也使得Python程序更加易于移植。2.6面向对象Python既支持面向过程的编程也支持而向对象的编程。在面向过程的语言中,程序是由过程或仅仅是可重用代码的函数构建起来的。在面向对象的语言中,程序是由数据和功 万方数据 NETWORKANDCOMMUNICATION网络与通信能组合而成的对象构建起来的。与其他主要的语言如c++和Java相比,Python以一种非常强大又简单的方式实现面向对象编程。2.7可扩展性如果需要一段关键代码运行得更快或者希望某些算法不公开,可以把部分程序用C或C++编写,然后在h,thon程序中使用它们。2.8可嵌入性可以把Python嵌入你的c,c++程序,从而向程序用户提供脚本功能。2.9丰富的库Python标准库确实很庞大。它可以帮助处理各种工作,包括止则表达式、文档生成、单元测试、线程、数据库、网页浏览器、CGI、订P、电子邮件、XML、XML—RPC、HTML、WAV文件、密码系统、GUI(图形用户界面)、Tk和其他与系统有关的操作。只要安装了Python,所有这些功能都是叮用的,这被称作Python的“功能齐全”理念。除了标准库以外,还有许多其他高质量的库,如wxPython、Twisted和Python图像库等。3DiangoDjango是使用Python开发的Web框架。它的架构成为MTV(Model-Template—View),Model用于数据库处理,Tem—plate是模板系统,用于显示处理,View是控制部分用于Mod—el的处理、数据的加工和模板的调用等工作。由于Django是使用Python开发的,所以如果用Django开发站点,则用Django库写Python代码。3.1特征3.1.1可插入(Hug-in)管理的ApplicationDjango提供了一个强大的命令行工具django—admin可以帮用户完成大馈的初始化及有关数据库方面的工作。3.1.2对象相关的映射完全在Python中定义数据模型。可以免费得到一个丰富的,动态访问数据库的API一但如果需要仍然可以写SQL语句。3.1.3URL分发URL的设计漂亮.cruft—free没有框架的特定限定。3.1.4模版系统使用DjanGo强大而可扩展的模板语言来分隔没计、内容和Python代码。3.1.5Cache系统可以挂在内存缓冲或其他的框架实现超级缓冲一实现所需要的粒度。3.1.6自动化的管理界面不需要花大鼋的工作来创建人员管理和更新内容的接界,DjanGo可以自动完成。3.1.7支持多种数据库已经支持Postgresql、MySQL、SQLite3、Oracle、ado_msSQL。3.1.8国际化完伞支持多国语言,允许针对应用程序提供特定困家语言的翻译字符3.2优势3.2.1高级Web框架Django免去了勾践动态Web站点的痛苦,它把常见的Web开发的问题抽象出来并提供了对频繁编程任务的捷径。3.2.2提供快速开发Django可以极大程度提高开发速度,由于采用Python语言,以为用几天、几星期、甚至几年的站点,用Django几个小时就可以做好。3.2.3干净实效的设计njango严谨的维护,干净的设计,它所有的代码让开发的Web程序遵循最佳实践,它的哲学是:Django很轻松地做对事情。4应用Django是一种十分高效的敏捷Web框架。从2005年发布到现在已经出现了大鼍基于Python和Django开发的站点。以一个简易Blog开发为例,来讲述基于Python和Django的Web开发流程。该Blog的开发流程如图1所示。创建工程0l配置数据库‘II创建应用10I创建M0dell毒II创建ViewI上I创建模板‘|更新数据库0l添加uRL映射图1Blog开发流程具体的开发流程如下:(1)创建工程使用下面的命令创建一个project:一57— 万方数据 电脑编程技巧与维护django-adminstartprojectwebblog‘’(2)配置数据库进入webblog目录,修改settings.PY:DATABASE_ENGINE=’sqlite37DATABASE_NAME=7webblog.db7(3)创建应用使用下面的命令创建一个app:manage.pystartappblog修改setting.PY,把新创建的app和模板加进去:TEMPLATE_DIRS=(”d:/webblog/”,)INSTALLED_APPS=("django.contrib.auth7,"django.contfib.contenttypes’,"django.contrib.sessions’,7django.contrib.sites’,"webblog.blog7,"django.contrib.admin’,)(4)创建Model进入blog目录,修改models.PY:classReporter(models.Model):full_name=models.CharField(maxlength=70)def—str(seIf):retumself.full_nameclassAdmin:passclassArticle(models.Model):pub_date=modeIs.DateTimeField0headline=models.CharField(maxlength=200)article=models.TextField0reporter=models.ForeignKeyfReporter)def—stL(setO:remmself.headlineclassAdmin:pass(5)创建View修改view.PY:fromwebblog.blog.modelsimpon+fromdjango.shortcutsimportrender_to_responsefromdjango.templateimportContext,loaderfromdjango.httpimportHttpResponsedefindex(request):article_list=Article.objects.all()retumrender__to._response("htmlS,index.html',{"article_list’:article_listl)(6)创建模板在webblog目录下创建htmls目录,进入该目录,创建in—dex.html:{%extends”base.html”%}{%blocktitle%lArticles{%endblock%l一58一{%blockcontent%)Articles</hl>{%forarticleinanicle_list%l

Headline:“article.headline}1<,p>

By“article.reporter.full_nameJ}</p>

Pubhshed“article.pub_dateldate:”Fj,Y”}}</p>{%endfor%}{%endblock%}创建base.html:{%blocktitle%}{%endblock%)</title></head><body>{%blockcontent%}{%endblock%l</body></html>(7)更新数据库在weblog目录下,执行:manage.PYsyncdb(8)添加URL映射修改ud.py,将访问地址加入进去:fromdjango.confIurls.defaultsimport4urlpattems=pattems(7j(r7^$’,"blog.views.index3。(r"^admin/’,include("django.contrib.admin.uds3),)这样一个简单的Blog系统就搭建成功了,整个系统的开发用了不到30分钟,基于Django和Python的Web开发,能够很好地满足快速开发的要求。5结语Django是一个优秀的平台。它提供了Web开发所必需的组件和:I:具,极大地方便用户的开发,并辅之功能强大的Web开发语言Python。Django/Python构成了一个优良的Web开发架构和平台,足以用来实现功能强大和易维护的Web应用。参考文献[1】1李迎辉.Python开发Rails框架——Ojango框架介绍.程序员,2006。(11).[2】王亚卿,方龙.浅析python在地图处理中的运用.华东森林经理.2008,(01).【3】郭力子.基于开源的Web开发架构——z0PE毋t}lon.计算机时代.2008,(07).作者简介王冉阳,男(1983一),学士,图形图象,Web开发。 万方数据 基于Django和Python的Web开发 作者: 王冉阳, WANG Ranyang 作者单位: 中间地质大学,北京,北京,100083 刊名: 电脑编程技巧与维护 英文刊名: COMPUTER PROGRAMMING SKILLS & MAINTENANCE 年,卷(期): 2009(2) 参考文献(3条) 1.郭力子 基于开源的Web开发架构--ZOPE/Python[期刊论文]-计算机时代 2008(07) 2.王亚卿;方龙 浅析python在地图处理中的运用[期刊论文]-华东森林经理 2008(01) 3.李迎辉 Python开发Rails框架--Django框架介绍 2006(11) 本文链接:http://d.g.wanfangdata.com.cn/Periodical_dnbcjqywh200902022.aspx </article> <div class="alert alert-warning" role="alert">...</div> <div class="thumbnail text-center"> <div class="more"> <span>还剩3页未读</span> <p class="go mt10"> <span class="btn btn-default" id="showMore" data-page="1"><i class="fa fa-chevron-down"></i> 继续阅读</span> </p> </div> </div> <div class="thumbnail box-line"> <div class="l1 line"></div> <div class="l2 line"></div> <div class="l3 line"></div> <div class="l4 line"></div> <div class="l5 line"></div> <div class="l6 line"></div> <div id="reader-more"> <p class="title">下载pdf到电脑,查找使用更方便</p> <p class="gray"> pdf的实际排版效果,会与网站的显示效果略有不同!!</p> <p class="download-info"> <span style="font-size: 14px;color: #888888">需要</span> <span style="font-size: 24px;">3</span> <span style="font-size: 14px;padding-right: 20px;color: #888888">金币</span> <a href="javascript:void(null);" onclick="JC.redirect('/pdf/create')" style="color: #cf6a07"> [ 分享pdf获得金币 ] </a> <span class="fcff">1 人已下载</span> </p> <p> <a class="btn btn-danger download buy circle80 fs30" href="javascript:void(null);" data-type="3" data-num="3" data-download="true"><i aria-hidden="true" class="fa fa-yen"> </i> 下载pdf</a> </p> </div> </div> </div> <!--right--> <div class="col-md-3"> <div class="thumbnail"> <h4>pdf贡献者</h4> <div class="ui items"> <div class="item"> <a class="ui tiny image" style="width: 50px;"> <img src="https://static.open-open.com/img/avatar/privary/default.png" width="50"> </a> <div class="content"> <a class="header" href="https://user.open-open.com/u/474782"> hymvp </a> <div class="description"> <p>贡献于2015-03-25</p> </div> </div> </div> </div> <div> 下载需要 <span style="font-size: 24px;">3</span> <span style="font-size: 14px;padding-right: 20px;color: #888888">金币</span> <a href="javascript:void(null);" onclick="JC.redirect('https://user.open-open.com/pay')" style="color: #cf6a07"> [金币充值 ] </a> <div class="kind-tip">亲,您也可以通过 <a href="javascript:void(0) " onclick="JC.redirect('/pdf/create')">分享原创pdf</a> 来获得金币奖励!</div> </div> </div> <div> <a class="btn btn-block buy btn-danger download" href="javascript:void(null);" data-type="3" data-num="3" data-download="true"><i aria-hidden="true" class="fa fa-yen"></i> 下载pdf</a> </div> <div class="box side-box mt20"> <div class="title"> <h3><i class="fa fa-tags" aria-hidden="true"></i> 关键词</h3> </div> <p class="tags mt10"> <a class="" href="/pdf/tag/django.html">Django</a> <a class="" href="/pdf/tag/web-kuangjia.html">Web框架</a> <a class="" href="/pdf/tag/python.html">Python</a> </p> </div> <div class="ad"> <script>(function() {var s = "_" + Math.random().toString(36).slice(2);document.write('<div id="' + s + '"></div>');(window.slotbydup=window.slotbydup || []).push({id: '4133327', container: s, size: '0,0', display: 'inlay-fix'});})();</script><script src="https://dup.baidustatic.com/js/os.js"></script> </div> <div class="box side-box mt20"> <div class="title"> <h3>相关pdf</h3> </div> <ul> <li class="ellipsis"> <a href="/pdf/156708f78bb04031aba57b790aac5915.html"><i class="fa fa-file-word-o" aria-hidden="true"></i>  基于Django和Python的Web开发</a> </li> <li class="ellipsis"> <a href="/pdf/609c035f509c4eb49016dfeddbe9577e.html"><i class="fa fa-file-word-o" aria-hidden="true"></i>  使用 Django 和 Python 开发 Web 站点</a> </li> <li class="ellipsis"> <a href="/pdf/af21b30f9cec44a4a692a6378ddcb1f4.html"><i class="fa fa-file-word-o" aria-hidden="true"></i>  使用Django 和Python开发Web站点</a> </li> <li class="ellipsis"> <a href="/pdf/d04d73a6ef9f4b29828979a1007022a9.html"><i class="fa fa-file-word-o" aria-hidden="true"></i>  Python Django Web开发指南</a> </li> <li class="ellipsis"> <a href="/pdf/3fa422305f254362832163c79de0ae50.html"><i class="fa fa-file-word-o" aria-hidden="true"></i>  python+django+web开发指南</a> </li> <li class="ellipsis"> <a href="/pdf/d095ca6d8d0549f888d932a0d83625f7.html"><i class="fa fa-file-word-o" aria-hidden="true"></i>  flask web开发:基于python的web应用开发实战</a> </li> <li class="ellipsis"> <a href="/pdf/730e6e936621479394d7ac9d271e2753.html"><i class="fa fa-file-word-o" aria-hidden="true"></i>  Python Web Development with Django</a> </li> <li class="ellipsis"> <a href="/pdf/80e4f596d8b54753819c267280c8fe8c.html"><i class="fa fa-file-word-o" aria-hidden="true"></i>  Python Web Development with Django</a> </li> <li class="ellipsis"> <a href="/pdf/2693618173c640e8bb8dcbfe8d137800.html"><i class="fa fa-file-word-o" aria-hidden="true"></i>  flaskweb开发:基于python的web应用开发实战</a> </li> <li class="ellipsis"> <a href="/pdf/545d7d61fc544e73b0ebf1cebe042534.html"><i class="fa fa-file-word-o" aria-hidden="true"></i>  Web Development with Python and Django</a> </li> </ul> </div> </div> </div> </div> </div> <footer > <div class="container py-5"> <div class="row"> <div class="col-md-3"> <h5>社区</h5> <div class="row"><div class="col-md-6"><a class="text-muted" href="/project/">项目</a></div><div class="col-md-6"><a class="text-muted" href="/solution/">问答</a></div><div class="col-md-6"><a class="text-muted" href="/wenku/">文库</a></div><div class="col-md-6"><a class="text-muted" href="/code/">代码</a></div><div class="col-md-6"><a class="text-muted" href="/lib/">经验</a></div><div class="col-md-6"><a class="text-muted" href="/news/">资讯</a></div></div> <ul class="list-unstyled text-small ut-mt20"><li><a class="text-muted" title=" 安卓开发专栏" target="_blank" href="http://www.open-open.com/lib/list/177">安卓开发专栏</a></li><li><a class="text-muted" href="http://www.open-open.com/lib/tag/开发者周刊" target="_blank" rel="tag">开发者周刊</a></li><li><a class="text-muted" href="http://www.open-open.com/lib/view/open1475497562965.html" target="_blank" rel="tag">Android Studio 使用推荐</a></li><li><a class="text-muted" href="http://www.open-open.com/lib/view/open1475497355674.html" target="_blank" rel="tag">Android开发推荐</a></li></ul> </div> <div class="col-md-3"> <h5>帮助中心</h5> <ul class="list-unstyled text-small"><li><a class="text-muted" href="/upload.html">文档上传须知</a></li></ul> <h5>关于我们</h5> <ul class="list-unstyled text-small"><li><a class="text-muted" href="/about.html">关于深度开源</a></li><li><a class="text-muted" href="/duty.html">免责声明</a></li><li><a class="text-muted" href="/contact.html">联系我们</a></li></ul> </div> <div class="col-md-6 text-center"><img class=center-block src="https://static.open-open.com/img/logo01.svg" width=190px alt="深度开源"><small class="d-block mb-3 text-muted ut-mt40">© 2006-2019 深度开源 —— 开源项目,开源代码,开源文档,开源新闻,开源社区  杭州精创信息技术有限公司  <br/><br/><img src="https://static.open-open.com/img/beian.png"/><a target="_blank" href="http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=33010602002439">  浙公网安备 33010602002439号</a>  <a target="_blank" href="http://www.beian.miit.gov.cn">浙ICP备09019653号-31</a></small></div> </div> </div> </footer> <div id="fTools"><span id="gotop"> <i class="fa fa-arrow-up" aria-hidden="true"></i> </span><span id="feedback" title="建议反馈"> <i class="fa fa-inbox" aria-hidden="true"></i></span></div> <!-- Bootstrap core JavaScript ================================================== --> <!-- Placed at the end of the document so the pages load faster --> <script type="text/javascript" src="https://static.open-open.com/js/lib.js"></script> <script type="text/javascript" src="https://static.open-open.com/assets/jquery-confirm/jquery-confirm.js?v=4.7.0"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js"></script> <script src="https://static.open-open.com/js/bootstrap.min.js"></script> <script type="text/javascript" src="https://static.open-open.com/js/base.js?v=2.002"></script> <script type="text/javascript" src="https://static.open-open.com/js/jq-plug.js?v=2.002"></script> <script> $(function () { JC.reminderPop();//弹出用户信息 $(".link-login").click(function(){ JC.lORr('login'); }); $("#topSearch").searchInit(); //用户登录状态 JC.setLogin(false); }); </script> <!-- JavaScript at the bottom for fast page loading --> <!-- end scripts --> </body> </html>