您好,欢迎访问三七文档
Django--完美主义者快速开发之选ByJetwayfromHDU_CloudCenter--2012/3/28历史•许多年前,劳伦斯出版集团需要开发一个以新闻内容为主的网站。•众所周知,对于新闻网站来说,需求变化很快,互动性也很高历史•于是,worldonline的三位工程师使用python开发了Django。这套框架是以比利时的吉普赛爵士吉他手DjangoReinhardt来命名的。JacobKaplan-Moss@jacobianAdrianHolovaty@adrianholovatySimonWillison@simonw设计哲学•Django的主要目的是简便、快速地开发数据库驱动的网站——动态网站。•Django强调代码复用,多个组件可以方便地以“插件”形式服务于整个框架,Django有许多功能强大的第三方插件。•Django强调快速开发,DRY•基于MVC(更确切的说是MTV)为什么是python•我想可能是一下几点:1、oop2、module机制,松耦合,模块插入方便3、代码简洁4、功能强大,模块多总结起来:python技术就是django技术为什么要快速开发•如果我们只考虑时间代价,时间短往往意味着客户更满意Time为什么要快速开发•并且你还可以有余力开发第二个版本TimeDjango应用•最著名的当然就是GoogleAppEngine•基于Django•Django应用可以很方便地在它上面部署Django开发工具•非得用IDE的话,我推荐PyCharm•本人喜欢txt文本直接编辑预备知识•Python基础知识•Html和css一点点,其他前端技术知道更好•数据库一点点•正则表达式一点点构建一个BLOG•1、安装python建议使用python2.7下载地址:下安装比较简单,只需一直下一步,最后导出环境变量就好了:c:\Python27;c:\Python27\scripts;构建一个BLOG•2、安装Django下载地址:直接将下载的Django-1.3.1.tar.gz解压python的安装目录下,在cmd中进入该目录,输入:pythonsetup.pyinstall最后,把C:\Python27\Scripts加入环境变量PATH中构建一个BLOG•3、创建项目输入:pythonD:\Python27\Scripts\django-admin.pystartprojectmyblog然后我们就可以看到:构建一个BLOG•说明:•__init__.py用于打包python工程•manage.py文件是Django中的一个工具•setting.py文件包含了项目的默认设置。包括了数据库信息、调试标志以及其他一些重要的变量。•urls.py文件在django里叫URLconf,将URL映射到你应用程序的配置文件。构建一个BLOG•4、运行开发服务器:在myblog目录下,输入:pythonmanage.pyrunserver然后在浏览器中输入:127.0.0.1:8000构建一个BLOG•5、创建blog应用在myblog目录下,输入:Pythonmanage.pystartappblog构建一个BLOG•6、在setting.py文件中,找到INSTALLED_APPS元组,加入以下行:‘myblog.blog’,构建一个BLOG•7、设计model,在models.py文件中输入:fromdjango.dbimportmodelsclassBlogPost(models.Model):title=models.CharField(max_length=150)body=models.TextField()timestamp=models.DateTimeField()构建一个BLOG•8、设置数据库我使用的是mysql,并且建立了djangodb数据库。所以在setting.py中,加入:'ENGINE':'mysql','NAME':'djangodb','USER':'root','PASSWORD':'123456','HOST':'localhost','PORT':'',构建一个BLOG•9、创建表:输入:pythonmanage.pysyncdb构建一个BLOG•10、设置自动admin应用打开setting.py,INSTALLED_APPS里加入:'django.contrib.admin',然后,命令行中输入:Pythonmanage.pysyncdb构建一个BLOG•11、设置urls.py只要去除以下行的#就可以了:#fromdjango.contribimportadmin#url(r'^admin/',include(admin.site.urls)),12、最后就是告诉django,在admin窗口里显示哪一个model,只需在model.py中加入以下行:fromdjango.contribimportadminadmin.site.register(BlogPost)构建一个BLOG•13、运行pythonmanage.pyrunserver在浏览器里输入:127.0.0.1:8000/admin/动态网站•用户向web服务器请求一个文档•Web服务器随即获取或生成这个文档•服务器再把结果返回给浏览器•浏览器将这个文档渲染出来MVCMVC•MVC把web分为数据模型,控制器和视图三层,可以使业务逻辑与数据表现分开;说白了,美工搞美工的,后台搞后台的,互不干扰,发挥各自优势Django是MTV分层•Django遵循了MVC(model-view-controller)这个分层方式,但是确切的说是MTV分层。•Mmodel,数据模型•Ttemplate,模板•Vview,视图Django是MTV分层•Model层1、使用的是ORM2、我们所能控制的就是models.py文件3、负责数据库管理Django是MTV分层•models.py文件1、我的理解是,一个类对应数据库的一张表2、前面构件blog时:fromdjango.dbimportmodels#导入内置数据库处理模块classBlogPost(models.Model):title=models.CharField(max_length=150)#标题body=models.TextField()#正文timestamp=models.DateTimeField()#时间戳admin.site.register(BlogPost)#注册要管理的数据对象Django是MTV分层•Template层1、负责怎么样显示数据2、说白了,就是利用一些格式化的html文件,使数据按照要求显示(显示在哪里,怎么显示等等)3、需要在工程目录下,建立templates文件夹,然后在setting.py中设置好templates目录的路径。然后在此目录中建立所需html文件。Django是MTV分层•在之前的blog应用中,我们要制作一个显示所有blog条目(title)的页面。•list.htmlhtmlbodyh1博客条目列表:/h1{%forlistintitle_array%}plist.item_title/p/body/htmlDjango是MTV分层•View层1、django中的view层是用于控制要显示什么数据2、我们能看到的就是views.py文件Django是MTV分层•views.py(可以是任意名字)既然是要控制显示的数据,那么要显示之前的blog数据呢?比如列出所有的titlefromdjango.shortcutsimportrender_to_responsefrommyblog.blog.modelsimportBlogPostdeflist_title(request):title_array=[]fortitle_datainBlogPost.objects.all():title_da={}title_da[“item_title”]=title_data.titletitle_array.append(title_da)returnrender_to_response(‘list.html’,{‘title_array’:title_array})Django是MTV分层•最后就差URLconf把模型,模板和视图串联起来了。•在urls.py文件中:fromdjango.conf.urls.defaultsimportpatterns,include,urlfromdjango.contribimportadminurlpatterns=patterns('',url(r'^admin/',include(admin.site.urls)),url(r‘list/$’,‘myblog.blog.views’),)Django是MTV分层•好吧,列出title的网页算是完成了•在浏览器中输入127.0.0.1:8000/list•Django会根据urls.py文件找到myblog文件夹下blog目录中的views.py文件中list_title函数,然后根据model.py文件找到数据库中BlogPost表中title列,并输出到list.html文件中,最后浏览器渲染出我们所需的网页。Django的过程Django的过程•Web服务器收到一个http请求•Django把web服务器传过来的请求转换成一个请求对象•Django在URLconf里查找正确的视图函数•调用这个视图函数,参数为请求对象以及任何捕捉到的URL参数•然后视图会创建并返回一个响应对象•Django将这个响应对象转换成web服务器可以理解的格式•Web服务器将响应发送给客户端Django一些可重用的模块•Django提供了很多可重用的模块•Django的modules机制是松耦合的,也就是说你可以很方便的插入这些模块•减少了多余的编写代码工作Django一些可重用的模块django-ratingsdjango-ajax-validationdjango-google-analyticsdjango-mailerdjango-queue-servicedjango-announcementsdjango-email-confirmationdjango-jitsdjango-livebloggingdjango-atompubdjango-discussiondjango-galaxydjango-messagesdjango-audioplayerdjango-db-logdjango-evolutiondjango-authopeniddjango-googlemapdjango-compressdjango-dynamic-media-servedjango-avatardjango-graphsdjango-oembeddjango-clevercssdjango-basic-blogdjango-microformatsdjango-object-view-trackingdjango-chunksdjango-basic-librarydjango-taggingdjango-navbardjango-adsdjango-basic-peopledjango-surveydjango-orm-cachedjango-rest-interfacedjango-basic-placesdjango-votingdjango-page-cmsdjango-registrationdjango-crondjango-wikidjango-photologuedjango-mobileadmindjan
本文标题:django入门
链接地址:https://www.777doc.com/doc-5079076 .html