Django’Web’Framework’

Transcription

a on03/20/2012

Outline WebframeworksWhypython?WhyDjango?Introduc ilsAddi onaltoolstofacilitateDjangoDevelopmentApplica onsmadewithDjangoTolearnmoreaboutDjangoReferences

WebFrameworksLanguages PhpPythonJavaRubyPerlJavasript Web frameworks Zend,Symfony,Phpdevshell Django,web2py,Cherrypy, Struts,Spring,Tapestry,GWT, Rubyonrails, Catalyst,Mason, JavaScriptMVC,

WhyPython? High- ‐levellanguage Concisesyntaxandeasytolearn Largeandgrowingdevelopercommunity PortableonalmostallplaYorms

WhyDjango? PythonprogramminglanguageOpen- ‐sourceprojectLargeandgrowingcommunityWell- ‐documentedLargecollec onsofappsGooddebuggingfeedbacks

HistoryoftheDjangoProject al- eadlinesofjournalismwebsites. Djangowasreleasedtothepublicbythedevelopersin2005. rdt. andreusablewebapplica ons.

Introduc ontoDjango Ahigh- e:Don’trepeatyourself. MVCdesignpa erns:codemodulesaredividedintologicgroups. Automa cAdminInterface. ElegantURLdesign. Powerful,extensibleanddesigner- ‐friendlytemplatesystem. Cachesystemavailableforsuperperformance.

WebDevelopmentwithoutWebFrameworks ApythonCGIscriptexample:

TheDjangoCounterpartwiththeMVCDesignPa ern

StepsforUsingDjango ojectStartanapplica pplica on

InstallandStartDjango ango- ‐*.tar.gz. tarxzvfDjango- ‐*.tar.gz. cdDjango- ‐*. sudopythonsetup.pyinstall. StartpythonandyoushouldbeabletoimportDjango: importdjango

StartaProject polls”appfromtheDjangoprojectwebsite. aojie/DesktopDjango project/ urcurrentdirectory:django- ‐admin.pystartprojectmysite

swillbegenerated: init kage(i.e.,agroupofmodules) manage.py:Acommand- ‐lineu ousways seings.py:Seings/configura onforthisDjangoproject urls.py:TheURLdeclara urDjango- ‐poweredsite

StartaProject ingcommandtostartthebuilt- runserver Youwouldseesomethingliketheseintheterminal:Valida ngmodels seings'Developmentserverisrunningath p://localhost:8000/QuittheserverwithCONTROL- ‐C.

StartaProject Ifyougotoh owingwebpage,sugges ngthedevelopmentwebserverisworking:

atabases: PostgreSQL(h p://www.postgresql.org/) SQLite3(h p://www.sqlite.org/) MySQL(h p://www.mysql.com/) SQLite3isthedatabaseusedinthispresenta on.

DatabaseSetup ATABASE ENGINE 'sqlite3'.DATABASE NAME '/User/zhaojie/Desktop/Django project/mysite/mydata.db hatiswhytheabsolutepathneedstobespecified. LED APPS”(thepollsappwillbecreatedlater).

StartanApp nage.pystartapppolls torywiththefollowingfilesinside:polls/init .pymodels.pytests.py

DatabaseIni aliza on Run“Pythonmanage.pysqlpolls” Then“pythonmanage.pysyncdb” ndatabase- ‐accessAPIforaccessingPollandChoiceobjects.

DefinetheModels ��polls”directory:

URLMapping Inthe“urls.py”file,makethefollowingchanges:

StarttheServer :

DjangoSummary Fromtheexampleabove,wecanseeafewcharacteris csofDjango:1)itprovidesaveryuser- ildinginsteadofonthedetailsofHTML;3)thebuilt- eloperstotesttheapplica onseasily.

DjangoSummary Besidestheseveralcharacteris csmen fthem:4)Genera ngnon- ‐HTMLcontent5)Caching6)Middleware7)Interna onaliza on8)Security9)Sessionframework

DjangoSummary 4)Genera ngnon- ‐HTMLcontent(Built- ‐ntoolsforproducingnon- ‐HTMLcontent): RSS/Atomsyndica onfeeds Sitemaps

DjangoSummary 5)Caching: namicpagessothattheydonotneededtobecalculatedeach mearequestismade.

DjangoSummary 6)Middleware: ertainAPI. allpiecesofmiddleware.

DjangoSummary 7)Interna onaliza on: Aminimalnumberof“transla onstrings”areneededinthepythoncodesfortransla on. Itallowsthewebapplica rences.

DjangoSummary 8)Security: thecommonsecuritymistakesthatwebdevelopersmake.

DjangoSummary Sessionframework: ydataonaper- ‐site- ractsthesendingandreceivingofcookies.

ComparisonswithRubyonRails amework:Ben Askins & Alan Green. Open Source Developer’s conferecne,2006.

Addi onalToolstoFacilitateDjangoDevelopment ibu ntandmakeDjangomorepowerful. ualProjectswri enfortheDjangoWebframework.

Addi oundinteres nganduseful: GeoDjango:acustomizedGISwebframework DjangoDebugToolbar:debuggingtool DjangoEasyMaps:mapdisplayingtool DjangoHaystack:modularsearchtool

Addi onalToolstoFacilitateDjangoDevelopment django- providescomprehensiveversioncontrolfacili es. South:providesasimple,stableanddatabase- ‐independentmigra onlayertoyourDjangoapplica ons. .

WebsitesUsingDjango iteswebsite itself!Wow, spreadingacross the world!WashingtonPost! I knewit is a famousnewspaper, and itswebsite is made withDjango!

ToLearnMoreAboutDjango net.Hereareafew: h /(OfficialDjangoDocuments) h utorial) h p://invisibleroads.com/tutorials/geodjango- ‐googlemaps- ‐build.html(OfficialGeoDjangoTutorial)

mples,youcanactuallya endconferenceswithafocusonDjangoandhereareafew: ngoConAustralia YoucanseeDjangoispopularworld- ‐wide!

References h p://www.webdesignish.com/the- ‐best- ‐web- ‐development- ‐frameworks.html h ps://www.djangoproject.com/(officialDjangowebsite) h p://www.eecho.info/Echo/python/history- ‐of- ‐django/ urceDeveloper’sConference,2006 AdrianHolovatyandJacobKaplan- ‐Moss.Thedefini veguidetodjango,2010 h p://djangopackages.com/(Djangopackages)

References h ps://github.com/dcramer/django- ‐debug- ‐toolbar(DjangoDebuggingToolbar) h ps://bitbucket.org/kmike/django- ‐easy- ‐maps(DjangoEasyMaps) h ps://github.com/toastdriven/django- ‐haystack(DjangoHaystack) h ps://github.com/e anen/django- ‐reversion(Django- ‐revision) h p://south.aeracode.org(South) h ps://github.com/gcollazo/Fabulous(Fabulous)

References h p://geodjango.org/(GeoDjango) h p://www.djangosites.org/(DjangoSites) h p://djangocon.us/blog/2011/11/08/get- ‐ready- ‐2012/(DjangoConUS) h p://2012.djangocon.eu/(DjangoConEU)

20.03.2012 · Web’Frameworks’ Languages Web frameworks Php’ Python’ Java Ruby’ Perl’ Javasript Zend,Symfony,Phpdevshell