Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
»ùÓÚ Django ¿ò¼ÜµÄÃô½Ý Web ¿ª·¢
 
À´Ô´£ºibm ·¢²¼ÓÚ:2017-7-7
  3026  次浏览      28
 

ǰÑÔ

´«Í³ Web ¿ª·¢·½Ê½³£³£ÐèÒª±àд·±Ëö·¦Î¶µÄÖØ¸´ÐÔ´úÂ룬²»½öÒ³Ãæ±íÏÖÓëÂß¼­ÊµÏֵĴúÂë»ìÔÓÔÚÒ»Æð£¬¶øÇÒ´úÂë±àдЧÂʲ»¸ß¡£¶ÔÓÚ¿ª·¢ÕßÀ´Ëµ£¬Ñ¡ÔñÒ»¸ö¹¦ÄÜÇ¿´ó²¢ÇÒ²Ù×÷¼ò½àµÄ¿ª·¢¿ò¼ÜÀ´¸¨ÖúÍê³É·±ÔӵıàÂ빤×÷£¬½«»á¶Ô¿ª·¢Ð§ÂʵÄÌáÉýÆðµ½ºÜ´ó°ïÖú¡£ÐÒÔ˵ÄÊÇ£¬ÕâÑùµÄ¿ª·¢¿ò¼Ü²¢²»ÉÙ¼û£¬ÐèÒª×öµÄ½öÊÇ´ÓÖÐÑ¡³öǡǡΪ¿ª·¢ÕßÁ¿Éí´òÔìµÄÄÇ¿îWeb¿ò¼Ü¡£

×Ô´Ó»ùÓÚ MVC ·Ö²ã½á¹¹µÄ Web Éè¼ÆÀíÄîÆÕ¼°ÒÔÀ´£¬Ñ¡ÔñÊʺϵĿª·¢¿ò¼ÜÎÞÒÉÊÇÏîÄ¿³É¹¦µÄ¹Ø¼üÐÔÒòËØ¡£ÎÞÂÛÊÇ Struts¡¢Spring »òÊÇÆäËû Web ¿ò¼ÜµÄ³öÏÖ£¬Ä¿µÄ¶¼ÊÇΪ°ïÖú¿ª·¢Õß°ÑËùÓеıàÂ빤×÷´òÀíµÄ¾®¾®ÓÐÌõ¡¢ÉÍÐÄÔÃÄ¿¡£ÔÚ¶¯Ì¬ÓïÑÔÁìÓò£¬Python¡¢Ruby¡¢Groovy µÈÓïÑÔÔÚ Web ¿ª·¢ÖÐÒ²Öð½¥·¢Õ¹×³´ó£¬ÏÆÆðÒ»À˽ÓÒ»À˵Ŀª·¢Èȳ±¡£Ãæ¶Ô Ruby on Rails ½¥½¥ÉîÈëÈËÐĵÄÐû´«¹¥ÊƺͻðÈÈÊÆÍ·£¬¸üΪ³ÉÊìÇÒ²»·¦ÓÅÐã³ÌÐòÔ±µÄPython ÉçÇøÒ²·×·×ÍÆ³öÓûÓëÖ®¿¹ºâµÄWeb¿ª·¢¿ò¼Ü¡£ÔÚ¶Ô Python ÆìϵĿª·¢¿ò¼Ü¾­¹ýÒ»·¬È¡Éá±È½ÏÖ®ºó£¬±ÊÕßÑ¡ÔñÁË Python ¿ò¼Ü Django ×÷Ϊ Web ¿ª·¢¿ò¼ÜµÄÊ×Ñ¡£¬¾¿ÆäÔµÓÉ£¬¾ÍÊÇ¿´ÖÐÁË Django ÐÂÓ±¼ò½àµÄ¿ª·¢Ä£Ê½ºÍ¾Þ´óµÄ·¢Õ¹Ç±Á¦¡£

ÔÚÏÂÃæµÄÕ½ÚÀ½«Í¨¹ýÒ»¸öÍêÕûµÄ Django ¿ò¼Ü Web ¿ª·¢Ê¾Àý£¬Ïêϸ½²½â¿ª·¢¹ý³ÌÖÐ MVC ¸÷²ã´Î´úÂë±àд¹ý³ÌÖÐËùÐèµÄ¸÷ÖÖÒªËØÓë×ÊÔ´£¬Í¨¹ýʵÀýÌåÑé Django Ϊ Web¿ª·¢Õß´øÀ´µÄ¸ßЧÓë±ã½Ý¡£

ϸ˵Django

Django ÊÇÓ¦ÓÃÓÚ Web ¿ª·¢µÄ¸ß¼¶¶¯Ì¬ÓïÑÔ¿ò¼Ü£¬×î³õÆðÔ´ÓÚÃÀ¹úÖ¥¼Ó¸çµÄ Python Óû§×飬¾ßÓÐÐÂÎÅ´ÓÒµ±³¾°µÄ Adrian Holovaty ÊÇ Django ¿ò¼ÜµÄÖ÷Òª¿ª·¢Õß¡£ÔÚ Adrian µÄ´øÁìÏ£¬Django С×éÖÂÁ¦ÓÚΪ Web ¿ª·¢Õß¹±Ï×Ò»¿î¸ßЧÍêÃÀµÄPython ¿ª·¢¿ò¼Ü£¬²¢ÇÒÔÚ BSD ¿ª·ÅÔ´´úÂëЭÒéÐí¿ÉÏÂÊÚȨ¸ø¿ª·¢Õß×ÔÓÉʹÓá£

Django ÓµÓÐÍêÉÆµÄÄ£°å»úÖÆ¡¢¶ÔÏó¹ØÏµÓ³Éä»úÖÆÒÔ¼°ÓÃÓÚ¶¯Ì¬´´½¨ºǫ́¹ÜÀí½çÃæµÄ¹¦ÄÜ£¬ÀûÓà Django£¬¿ÉÒÔ¿ìËÙÉè¼ÆºÍ¿ª·¢¾ßÓÐ MVC ²ã´ÎµÄ Web Ó¦Óá£ÎªÁË´òÏû¿ª·¢ÕßÑ¡Óà Django ¿ò¼ÜʱµÄÒÉÂÇ£¬Ê×ÏÈ·ÖÎöһϠDjango ÒýÈËעĿµÄÌØÐÔ¡£ÔÚʵÌåÓ³Éä·½Ãæ£¬Django µÄ¶ÔÏóÏà¹ØÓ³Éä»úÖÆ°ïÖú¿ª·¢ÕßÔÚ Python ÀàÖÐÁé»î¶¨ÒåÊý¾ÝÄ£ÐÍ£¬²¢ÇÒDjango ¾ßÓй¦ÄܷḻµÄ¶¯Ì¬Êý¾Ý¿â·ÃÎÊ API£¬¿ÉÒÔ´ó·ù¶È¼ò»¯Êéд SQL Óï¾äµÄ·±ÔÓ¹¤×÷¡£Í¬Ê± Django Ö§³Ö°üÀ¨ Postgresql£¬MySql£¬Sqlite£¬Oracle ÔÚÄڵĶàÖÖºǫ́Êý¾Ý¿â¡£Django µÄ URL ·Ö·¢Éè¼ÆµÄÊ®·Ö¼ò½àÃÀ¹Û£¬²»»áÔÚÁ´½ÓÖвúÉúÒ»´ó´®ÔÓÂÒÇÒÄÑÒÔÀí½âµÄ×Ö·û¡£Ê¹Óà Django ¿ÉÀ©Õ¹µÄÄÚÖÃÄ£°å£¬¿ÉÒÔ½«Ä£ÐͲ㡢¿ØÖƲãÓëÒ³ÃæÄ£°åÍêÈ«¶ÀÁ¢¿ªÀ´½øÐбàÂë¡£Django »¹¾ßÓÐ×Ô¼ºµÄ Cache ϵͳ£¬Èç¹ûÐèÒª£¬Ò²¿ÉÒÔ¸ù¾Ý¿ª·¢ÕßµÄÒªÇóǶÌׯäËûµÄ Cache ¿ò¼Ü¡£

Æð³ÌǰµÄ×¼±¸

¼´Ê¹ÊÇ¶Ô Python ÓïÑÔ»¹²»Ì«ÊìϤ£¬Django ¿ª·¢µÄÆð²½¹ý³Ì¶ÔÓÚÐÂÊÖÀ´ËµÒ²²¢²»¸´ÔÓ£¬Í¨¹ýʹÓà Django ¿ò¼ÜÍê³ÉÏÂÃæµÄ Web Ó¦Óÿª·¢£¬¿ÉÒÔÔÚ¹ý³ÌµÄÿ¸ö²½ÖèÖ®ÖÐÌå»áµ½ Django ¿ò¼Ü¸³Ó迪·¢ÕßµÄÃô½ÝÓë×ÔÓÉ¡£

ÔÚ¿ªÊ¼Ö®Ç°£¬Ê×ÏÈÒªÅäÖúÃPythonºÍDjangoµÄ¿ª·¢»·¾³£¬ÏÂÃæµÄʾÀý½«ÔÚWindows²Ù×÷ϵͳϽøÐУ¬ÓëLinux/Unix²Ù×÷ϵͳ»·¾³ÏµĿª·¢¹ý³ÌÏà±È£¬½öÔÚ»·¾³±äÁ¿ÅäÖõȷ½ÃæÂÔÓв»Í¬¡£Ä¿Ç°PythonµÄ×îа汾ÊÇ2.5.1£¬ÔÚ¹Ù·½Õ¾µãPython.orgÏÂÔØ°²×°°üºó´î½¨ºÃPythonµÄ±àÒëÔËÐл·¾³£¬½ÓÏÂÀ´»¹ÐèÒª°ÑPythonµÄ°²×°Â·¾¶Ìí¼ÓÔÚϵͳ»·¾³±äÁ¿pathÀïÃæ£¬ÒÔ±ãÔÚÃüÁîÐÐÏÂʹÓÃPython½øÐбàÒë¼°ÔËÐС£

DjangoĿǰµÄ×îз¢Ðа汾ÊÇ0.96°æ£¬ÆäѹËõ°ü¿ÉÒÔÔÚ¹Ù·½Õ¾µãdjangoproject.comÏÂÔØ¡£½âѹºó½øÈëDjangoĿ¼£¬ÔÚÃüÁîÐÐÀïÖ´ÐÐpython setup.py install£¬ÕâÑùDjango¾Í»á×÷ΪµÚÈý·½Ä£¿é±»°²×°ÔÚPythonµÄsite-packagesĿ¼ÖУ¬È»ºó°ÑDjangoÖÐbinĿ¼µÄ·¾¶Ìí¼Óµ½»·¾³±äÁ¿pathÀïÃæ£¬ÕâÑùÔÚÃüÁîÐÐÀï¾Í¿ÉÒÔ·½±ãµÄʹÓÃDjangoÌṩµÄ¸÷ÖÖÖ¸Áî¡£

¿ªÊ¼DjangoµÄÂóÌ

ÔÚÏÂÃæµÄ²½ÖèÀ½«»áÀûÓÃDjango¿ò¼ÜʵÏÖÒ»¸öÍêÕûСÇɵÄWebÓ¦ÓóÌÐò¡£Ó¦ÓÃʵÀý½«´´½¨ÊµÏÖÒ»¸öÐÂÎŹ«¸æÅÆ£¬Óû§¿ÉÒÔ´Óºǫ́Ìí¼ÓÐÂÎÅ·ÖÀàºÍÌõÄ¿£¬È»ºóÔÚǰ¶ËÒ³ÃæÖÐÏÔʾÐÂÎŵÄͳ¼ÆÐÅÏ¢¡£ÔÚÓ¦ÓõÄʵÏÖ¹ý³ÌÖУ¬½«»áÖð²½½éÉÜDjangoµÄ¿ª·¢·½Ê½¼°Æä´øÀ´µÄ¿ì½ÝÌåÑé¡£

Ϊ°ïÖú¿ª·¢ÕßʵÏÖ²»Í¬µÄ¹¦ÄÜ£¬DjangoΪÎÒÃÇÌṩÁËÖÚ¶àµÄ¿ª·¢Ö¸Á´ó²¿·Ö·±ËöµÄ²Ù×÷¶¼±»Django¼¯³ÉÔÚ¼ò½àµÄÃüÁîÐÐÌáʾ·ûÖÐʵÏÖ¡£ÏÖÔÚ´ò¿ªÃüÁîÌáʾ·û£¬½øÈëµ½ÏëÒª´´½¨Ó¦ÓõÄĿ¼ºó¼üÈëdjango-admin.py startproject newsÃüÁµ÷ÓÃDjangoµÄ¿ØÖÆÌ¨ÃüÁîн¨Ò»¸öÃûΪnewsµÄ¹¤³Ì£¬Óë´ËͬʱDjango»¹ÔÚд´½¨µÄnewsÎļþ¼ÐÏÂÉú³ÉÒÔÏÂËĸö·Ö¹¤²»Í¬µÄÎļþ¡£

__init__.py

Îļþ__init__.py¿ÉÒÔÏòPython±àÒëÆ÷±íÃ÷µ±Ç°Îļþ¼ÐϵÄÄÚÈÝÊÇPython¹¤³ÌÄ£¿é¡£

2.manage.py

manage.pyÊÇPython½Å±¾Îļþ£¬ÓëDjangoµÄÃüÁîÐй¤¾ßdjango-admin.pyÅäºÏ£¬¿ÉÒÔ¶Ô½¨Á¢µÄ¹¤³Ì½øÐйÜÀíÅäÖá£

settings.py

ÕâÊÇDjango¹¤³ÌµÄÅäÖÃÎļþ£¬Ó빤³ÌÏà¹ØµÄ¹¤³ÌÄ£¿éºÍÊý¾Ý¿âÈ«¾ÖÅäÖÃÐÅÏ¢¶¼ÔÚsettings.pyÖÐÉèÖá£

urls.py

Îļþurls.py¸ºÔðÅäÖÃURLµÄµØÖ·Ó³ÉäÒÔ¼°¹ÜÀíURLµÄµØÖ·¸ñʽ¡£

µ±ÐµĹ¤³Ì½¨Á¢ºÃÖ®ºó£¬¼ÙÈçÆÈ²»¼°´ý¾ÍÏëÖªµÀн¨¹¤³ÌµÄÄ£Ñù£¬DjangoÒѾ­ÎªÄã×¼±¸ºÃÒ»¿îÇáÁ¿¼¶µÄWeb·þÎñÆ÷ÒÔ±ãÔÚ¿ª·¢¹ý³ÌÖÐËæÊ±²âÊÔʹÓ᣿ª·¢ÕßÖ»ÐèÔÚÃüÁîÌáʾ·ûϽøÈ빤³ÌĿ¼£¬¼üÈëÃüÁîmanage.py runserver£¬¾Í¿ÉÒÔÆô¶¯Web·þÎñÆ÷À´²âÊÔн¨Á¢µÄ¹¤³Ì£¬Èç¹ûÆô¶¯Ã»ÓдíÎ󣬽«¿ÉÒÔ¿´µ½ÏÂÃæÕâÑùµÄÌáʾÐÅÏ¢£º¡°Development server is running at http://127.0.0.1:8000/¡± ±íʾµ±Ç°¹¤³ÌÒѾ­¿ÉÒÔͨ¹ý±¾»úµÄ8000¶Ë¿Ú·ÃÎÊ¡£Í¨¹ýä¯ÀÀÆ÷´ò¿ªÉÏÊöµØÖ·£¬Èçͼ1ËùʾµÄDjangoÏîÄ¿³õÊ¼Ò³Ãæ½«»á³öÏÖÔÚ¶ÁÕßÃæÇ°¡£

ͼ 1. DjangoÏîÄ¿³õÊ¼Ò³Ãæ

ÔÚÃüÁîÐÐÀïʹÓÃCtrl+Break»òCtrl+CµÄ×éºÏ¼ü¿ÉÒÔÍ£Ö¹runserverÃüÁîÆô¶¯µÄWeb·þÎñÆ÷¡£µ±È»£¬Django×Ô´øµÄWeb·þÎñÆ÷Ò»°ãÖ»ÊÇÔÚ¿ª·¢²âÊԵĹý³ÌÖÐʹÓ㬵±Django¹¤³ÌÕæÕý·¢²¼Ê±£¬¿ÉÒÔͨ¹ý¼ÓÔØmod_python.soÄ£¿é°ÑDjangoÓ¦Óò¿ÊðÔÚApacheÉÏ£¬ÒÔ·½±ãWeb·ÃÎʵĹÜÀíºÍÅäÖá£

DjangoµÄÄ£ÐͶ¨Òå

ÔÚ¹¤³Ì½¨Á¢ºÃÖ®ºó£¬½ÓÏÂÀ´¾Í¿ÉÒÔ±àдDjangoµÄÓ¦ÓÃÄ£¿é¡£¼üÈëÃüÁîpython manage.py startapp article£¬ÃüÁî»áÔÚµ±Ç°¹¤³ÌÏÂÉú³ÉÒ»¸öÃûΪarticleµÄÄ£¿é£¬Ä¿Â¼Ï³ýÁ˱êʶPythonÄ£¿éµÄ__init__.pyÎļþ£¬»¹ÓжîÍâµÄÁ½¸öÎļþmodels.pyºÍviews.py¡£

ÔÚ´«Í³µÄWebµÄ¿ª·¢ÖУ¬ºÜ´óµÄÒ»²¿·Ö¹¤×÷Á¿±»ÏûºÄÔÚÊý¾Ý¿âÖд´½¨ÐèÒªµÄÊý¾Ý±íºÍÉèÖñí×Ö¶ÎÉÏ£¬¶øDjangoΪ´ËÌṩÁËÇáÁ¿¼¶µÄ½â¾ö·½°¸¡£½èÖúDjangoÄÚ²¿µÄ¶ÔÏó¹ØÏµÓ³Éä»úÖÆ£¬¿ÉÒÔÓÃPythonÓïÑÔʵÏÖ¶ÔÊý¾Ý¿â±íÖеÄʵÌå½øÐвÙ×÷£¬ÊµÌåÄ£Ð͵ÄÃèÊöÐèÒªÔÚÎļþmodels.pyÖÐÅäÖá£

ÔÚµ±Ç°µÄ¹¤³ÌÖУ¬ÐèÒªÓÐÁ½¸öModelsÄ£ÐÍ£¬·Ö±ð¶ÔÓ¦List±íºÍItem±í£¬ÓÃÀ´´æ´¢ÐÂÎŵķÖÀàºÍÐÂÎŵÄÌõÄ¿£¬Ã¿¸öItemÏî¶¼»áÓÐÒ»¸öÍâ¼üÀ´±ê¼ÇÎÄÕµĹéÊô·ÖÀà¡£ÏÂÃæ´ò¿ªDjango´´½¨µÄmodels.pyÎļþ£¬°´ÕÕÎļþ×¢ÊÍÖÐÌáʾµÄÄ£¿éÌí¼ÓλÖ㬱àдÈçϵĴúÂ룺

Çåµ¥ 1. models.pyÎļþÄ£ÐͶ¨Òå

class List(models.Model):
title = models.CharField(maxlength=250, unique=True)
def __str__(self):
return self.title
class Meta:
ordering = ['title']
class Admin:
pass

ÉÏÃæÕâ¶ÎPython´úÂ붨ÒåÁË´æ´¢ÐÂÎÅ·ÖÀàµÄListÊý¾Ý±í£¬ÉÏÊöÄ£ÐÍÖе͍Òå»á±»Djangoת»»³ÉÓëÊý¾Ý¿âÖ±½Ó½»»¥µÄ½á¹¹»¯²éѯÓïÑÔÀ´½¨Á¢Êý¾Ý±í£¬¼´´´½¨Ò»¸öÃûΪListµÄ±í¸ñ£¬±í¸ñÄÚµÄÁ½¸ö×ֶηֱðÊÇDjango×Ô¶¯Éú³ÉµÄÕûÐÍÖ÷¼üidºÍ×î´ó¿í¶ÈΪ250¸ö×Ö·ûµÄVARCHARÀàÐÍ×Ö¶Îtitle£¬²¢ÇÒÔÚtitle×Ö¶ÎÉ϶¨ÒåÁËΨһÐÔÔ¼Êø£¬À´±£Ö¤ÐÂÎÅ·ÖÀ಻»áÓÐÍêÈ«ÏàͬµÄÃû³Æ¡£

ÔÚListÀàÎļþÀﻹ¶¨ÒåÁ˺¯Êý__str__()£¬×÷ÓÃÊÇ·µ»Øself×Ö·û´®±íʾµÄtitle×ֶΡ£¶øÔÚÀàMetaÖУ¬ÉèÖÃÁËList±í¸ñ°´ÕÕtitle×Öĸ˳ÐòµÄÅÅÐò·½Ê½¡£ÔÚÀàAdminµÄÉèÖÃÖУ¬ÔÊÐíDjangoÕë¶Ôµ±Ç°µÄModelsÄ£ÐÍ×Ô¶¯Éú³ÉDjango³¬¼¶Óû§µÄºǫ́¹ÜÀíÈë¿Ú£¬¹Ø¼ü´ÊpassÉ趨Django½«°´ÕÕĬÈÏ·½Ê½Éú³Éºǫ́¹ÜÀí½çÃæ¡£ÕâÒ»²¿·ÖÔÚÉÔºóµÄÕ½ڿÉÒÔ¿´µ½£¬ÓÉ´ËÒ²¿ÉÒÔÌå»áµ½Django´øÀ´µÄ¶ÀÌØ÷ÈÁ¦¡£ÏÂÃæÔÙÀ´Ìí¼ÓÐÂÎÅÌõÄ¿Item¶ÔÓ¦µÄModelsÄ£ÐÍ£¬´úÂëÈçÏÂÃæËùʾ£º

Çåµ¥ 2. Ìí¼ÓÐÂÎÅÌõÄ¿ModelsÄ£ÐÍ

import datetime
class Item(models.Model):
title = models.CharField(maxlength=250)
created_date = models.DateTimeField(default=datetime.datetime.now)
completed = models.BooleanField(default=False)
article_list = models.ForeignKey(List)
def __str__(self):
return self.title
class Meta:
ordering = ['-created_date', 'title']
class Admin:
pass

ItemÊý¾Ý±í¶ÔÓ¦µÄModels´úÂëÉÔ΢¸´ÔÓһЩ£¬µ«²¢²»»Þɬ¡£´úÂëÀïÊ×ÏÈÒýÈëdatetimeÀàÐÍ£¬ÓÃÓÚ¶¨Òå±íʾÎÄÕ´´½¨ÈÕÆÚµÄcreated_date×ֶΣ¬²¢ÇÒͨ¹ýPythonµÄ±ê×¼º¯Êýdatetime.datetime.now·µ»ØÏµÍ³µ±Ç°ÈÕÆÚÀ´ÉèÖÃ×ֶεÄĬÈÏÖµ¡£ÔڼǼÅÅÐòµÄorderingÉèÖÃÖУ¬·ûºÅ¡°-¡±±íʾ°´ÕÕÈͮ򵀵¹Ðò½øÐÐÅÅÁУ¬Èç¹ûÎÄÕ´´½¨ÈÕÆÚÏàͬ£¬ÔòÔÙ°´ÕÕtitleµÄ×ÖĸÐòÕýÐòÅÅÁС£

µ½´ËΪֹ£¬Ó¦ÓÃÖÐÄ£ÐͲ¿·ÖÐèÒª¶¨ÒåµÄÁ½¸öÊý¾Ý±í¶¼ÒѾ­´´½¨Íê±Ï£¬ÏÂÒ»²½µÄ¹¤×÷ÊÇÈÃDjango²¿Êð²¢ÔÚÊý¾Ý¿âÖÐÉú³ÉÒѾ­Ð´ºÃµÄModelsÄ£ÐÍ¡£

DjangoÄ£¿éµÄ²¿Êð

ÔÚDjangoÖУ¬Ó빤³ÌÈ«¾ÖÏà¹ØµÄÉèÖö¼ÐèÒªÔÚÅäÖÃÎļþsettings.pyÖÐÌí¼Ó¡£±ÊÕßʹÓÃMySQL×÷Ϊºǫ́Êý¾Ý¿â£¬²¢ÇÒÒѾ­ÔÚMySQLÖд´½¨ÃûΪdjango_newsµÄÊý¾Ý¿â¡£ÔòÐèÒªÔÚsettings.pyÎļþÖеÄÏàӦλÖÃÉ趨DATABASE_ENGINE = "mysql" ÒÔ¼° DATABASE_NAME = "django_news"¡£

ÕâÀïҪעÒâµÄÊÇ£¬Èç¹ûʹÓÃSQLiteÊý¾Ý¿â£¬Django¿ÉÒÔ¸ù¾ÝÊý¾Ý¿âµÄÃû³Æ×Ô¶¯ÔÚSQLiteÖд´½¨ÐµÄÊý¾Ý¿â£¬¶øÔÚMySQL¡¢PostgreSQL»òÆäËûµÄÊý¾Ý¿âÖУ¬ÔòÐèÒªÏÈ´´½¨ÓëÉ趨Ãû³Æ¶ÔÓ¦µÄÊý¾Ý¿â¡£ÔÚʹÓÃMySQLÊý¾Ý¿âʱ£¬ÐèÒª¶îÍâ°²×°MySQLµÄPythonÁ´½Ó¿âMySQLdb-1.2.1£¬Õâ¸öÄ£¿é¿ÉÒÔÔÚÕ¾µãhttp://sourceforge.net/projects/mysql-python/ÏÂÔØ£¬Ä¿Ç°Ö§³ÖµÄPython°æ±¾Îª2.4£¬ËùÒÔʹÓÃMySQLÊý¾Ý¿âÐèÒªÔÚ2.4°æ±¾µÄPython»·¾³À´¿ª·¢ÔËÐС£

½ÓÏÂÀ´µÄDATABASE_USERºÍDATABASE_PASSWORDÁ½ÏîÄÚÈÝÔòÐèÒªÓû§¸ù¾Ý±¾»úÉèÖÃÌîд·ÃÎÊÊý¾Ý¿âµÄÓû§ÃûºÍÃÜÂë¡£Èç¹ûÊý¾Ý¿â°²×°ÔÚÆäËû»úÆ÷ÉÏ»òÕ߸ü¸ÄÁËÊý¾Ý¿âµÄ¼àÌý¶Ë¿Ú£¬Ôò»¹ÐèÒªÉèÖÃDATABASE_HOSTµØÖ·ºÍDATABASE_PORTÏî¡£±ÊÕßʹÓõÄMysqlÊý¾Ý¿âÉèÖÃΪ£º

DATABASE_USER = 'django'
DATABASE_PASSWORD = 'django_password'

ΪÁËʹDjangoʶ±ð¿ª·¢ÕßÌí¼ÓµÄÓ¦ÓÃÄ£¿é£¬ÔÚsettings.pyÎļþµÄINSTALLED_APPS²¿·ÖÖУ¬ÐèÒª¶¨ÒåDjango¹¤³Ì¼ÓÔØµÄÓ¦ÓÃÁÐ±í¡£Ä¬ÈÏÇé¿öÏ£¬ÁбíÖÐÒѾ­Ìí¼ÓÁËDjango¹¤³ÌÔËÐÐËùÐèµÄ²¿·Ö×Ô´øÄ£¿é£¬ÎÒÃÇ»¹ÐèÒª°Ñ¸Õ²Å±àдºÃµÄÓ¦ÓÃÄ£¿énews.article¼ÓÈëÆäÖУ¬Í¬Ê±Ìí¼ÓDjango×Ô´øµÄdjango.contrib.adminÓ¦ÓÃÄ£¿é£¬Ð޸ĺõĴúÂëÈçÏÂËùʾ£º

Çåµ¥ 3. Ìí¼ÓËùÐèµÄÄ£¿é

INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.admin',
'news.article',
)

Ìí¼ÓadminÄ£¿éºó»¹²»ÄÜÁ¢¼´Ê¹ÓÃDjangoµÄadminºǫ́¹ÜÀí½çÃæ£¬ÐèÒª´ò¿ªNews¹¤³Ì¸ùĿ¼ÏµÄurls.pyÎļþ£¬½«¡°# Uncomment this for admin:¡±ºóÃæµÄ#×¢ÊÍÈ¥µô£¬Ê¹µÃDjangoÕë¶Ô¹ÜÀí½çÃæµÄURLתÏò¡°(r'^admin/', include('django.contrib.admin.urls')),¡±¿ÉÓã¬ÕâÑù·ÃÎÊadminÄ£¿éʱDjango¾Í¿ÉÒÔ˳Àû½âÎö·ÃÎʵØÖ·²¢×ªÏòºǫ́¹ÜÀí½çÃæ¡£

µ±ÅäÖÃÎļþµÄ¸Ä¶¯Íê³ÉÖ®ºó£¬¾Í¿ÉÒÔÔÚNews¹¤³ÌµÄÃüÁîÌáʾ·ûÏÂÖ´ÐÐmanage.py syncdbÖ¸Áî¡£Django»á¸ù¾ÝÄ£Ð͵͍Òå×Ô¶¯Íê³ÉORMµÄÊý¾Ý¿âÓ³É乤×÷£¬ÆÁ±ÎÁ˵ײãÊý¾Ý¿âϸ½ÚºÍSQL²éѯµÄ±àд¡£

չʾDjango÷ÈÁ¦µÄʱ¿ÌÒѾ­À´ÁÙ£¬Django¿ò¼Ü½«Èÿª·¢Õß¿ªÊ¼ÉñÆæµÄÌåÑé¡£Ëæ×ÅÃüÁîÖ´ÐкóµÄ¹ö¶¯Ìáʾ£¬DjangoÒѾ­¸ù¾ÝÎÒÃǸղÅÔÚmodelsÀﶨÒåµÄÓ³ÉäÎļþ£¬×Ô¶¯ÔÚÊý¾Ý¿âÀï´´½¨ºÃ¶ÔÓ¦µÄ±íºÍ×ֶΡ£ÃüÁîÖ´ÐеÄͬʱ»áÌáʾÓû§´´½¨¡°superuser"ÕË»§£¬À´µÇ½Django×Ô¶¯´´½¨ºÃµÄºǫ́¹ÜÀí½çÃæ¶ÔÄ£ÐͽøÐйÜÀí¡£Ö¸ÁîÖ´ÐÐʱͬ²½¸üÐÂÊý¾Ý¿â±íµÄÃüÁîÌáʾÈçͼ2Ëùʾ£º

ͼ 2. DjangoÖ¸ÁîÖ´ÐÐʱͬ²½¸üÐÂÊý¾Ý¿â±í

DjangoÖ¸ÁîÖ´ÐÐʱͬ²½¸üÐÂÊý¾Ý¿â±í

ά³Öѧϰ¶¯Á¦µÄ×îºÃ·½Ê½¾ÍÊÇËæÊ±¶¼¿ÉÒÔÕÒµ½Ò»µãССµÄ³É¾Í¸Ð£¬ÏÂÃæÀ´¿´Ò»ÏÂÕâЩ²½ÖèÍê³ÉÁËÄÄЩ¹¤×÷¡£ÔÙ´ÎʹÓÃÃüÁîmanage.py runserverÀ´Æô¶¯Django×Ô´øµÄWeb·þÎñÆ÷ºó£¬ÔÚä¯ÀÀÆ÷ÖзÃÎʵØÖ·http://127.0.0.1:8000/admin/£¬Ê¹ÓøղŴ´½¨µÄsuperuserÓû§µÄÕ˺źÍÃÜÂëµÇ½£¬Èçͼ3ËùʾƯÁÁµÄDjangoºǫ́¹ÜÀí½çÃæ¾Í³öÏÖÔÚÑÛǰ¡£

ͼ 3. Django¸ù¾ÝÄ£ÐÍ×Ô¶¯Éú³ÉµÄºǫ́¹ÜÀí½çÃæ

Django¸ù¾ÝÄ£ÐÍ×Ô¶¯Éú³ÉµÄºǫ́¹ÜÀí½çÃæ

ÔÚadmin¹ÜÀí½çÃæÖУ¬ÏÔʾÁËÓ¦ÓÃÖÐÒѾ­¶¨ÒåµÄ¸÷¸ömodelsÄ£¿é£¬µ±µã»÷²é¿´Ê±£¬Ôò»áÏÔʾmodelsÖдæÔÚµÄÊý¾Ý¿â¶ÔÏóÁÐ±í¡£DjangoÌṩµÄºǫ́¹ÜÀí½çÃæ·½±ãÓû§Ö±½Ó¸ü¸Ä»òÌí¼ÓÊý¾Ý¿â×ֶΣ¬ÏÂÃæÎÒÃǵã»÷"Lists"ÏîÅԱߵġ°Add¡±À´Ìí¼ÓеÄÐÂÎÅ·ÖÀà¡£ÔÚtitle×Ö¶ÎÖмüÈë¡°Sports News¡±»òÆäËûÄãϲ»¶µÄ·ÖÀàºó±£´æ¡£È»ºóÔÚ"Items"ÏîÖеã»÷¡°Add¡±£¬ÌîÈëÐÂÎŵĵÚÒ»¸öÌõÄ¿£¬Ã¿¸öItemÌõÄ¿¶¼¶ÔÓ¦ListÖеÄÒ»¸ö·ÖÀàÏÌí¼ÓItemµÄ½çÃæÈçͼ4Ëùʾ£¬ÓÉÓÚÉèÖÃÁ˱íÖ®¼äµÄ¹ØÁª£¬DjangoµÄItem¹ÜÀí½çÃæÖлáΪÒÑÌí¼ÓList·ÖÀà×Ô¶¯Éú³ÉÄÚÈݵÄÏÂÀ­Ñ¡Ïî¡£

ͼ 4. Ìí¼ÓÐÂÎÅÌõÄ¿µÄ½çÃæ

Ìí¼ÓÐÂÎÅÌõÄ¿µÄ½çÃæ

Django±ã½ÝµÄºǫ́¹ÜÀí½çÃæÎªWeb¿ª·¢ÈËÔ±½ÚÊ¡ÁË´óÁ¿µÄʱ¼ä£¬Ä¿Ç°Ê¹Óõ½µÄÖ»ÊÇDjangoĬÈϵĺǫ́¹ÜÀí·½Ê½£¬¿ª·¢Õß»¹¿ÉÒԲο¼DjangoÌṩµÄÓû§ÊÖ²á¶Ôºǫ́½øÐнøÒ»²½µÄ¶¨Öƺ͸öÐÔ»¯¡£

ʵÏÖDjangoµÄ¿ØÖƲãºÍ±íÏÖ²ã

½øÐе½ÕâÀDjango¹¤³ÌÖеÄÄ£ÐͲãÒѾ­´¦ÀíÍê³É£¬ÏÂÃæÒª×öµÄ¾ÍÊÇÈçºÎÓôúÂëÀ´ÓëmodelsÖж¨ÒåµÄ×ֶνøÐн»»¥£¬Õâ¾ÍÊÇDjangoÖеÄView²¿·Ö¡£Ó봫ͳMVC·Ö²ã¶¨ÒåÂÔÓв»Í¬µÄÊÇ£¬ÔÚDjangoÖУ¬ViewµÄ¹¦ÄÜÊǶÔÒ³ÃæÇëÇó½øÐÐÏìÓ¦ºÍÂß¼­¿ØÖÆ£¬¶øÒ³ÃæÄÚÈݵıíʾÔòÓÉDjangoµÄTemplateÄ£°åÀ´Íê³É¡£ÎÒÃÇ¿ÉÒÔ°ÑDjangoµÄViewÀí½âΪʵÏÖ¸÷ÖÖ¹¦ÄܵÄPythonº¯Êý£¬View¸ºÔð½ÓÊÜURLÅäÖÃÎļþurls.pyÖж¨ÒåµÄURLת·¢²¢ÏìÓ¦´¦Àí£¬µ±DjangoÊÕµ½ÇëÇóÖ®ºóµ÷ÓÃÏàÓ¦µÄViewº¯ÊýÀ´Íê³É¹¦ÄÜ£¬articleÄ£¿éÖеÄviews.pyÎļþ´úÂ붨ÒåÈçÏ£º

Çåµ¥ £´. views.py´úÂ붨Òå

from django.shortcuts import render_to_response
from news.article.models import List

def news_report(request):
article_listing = []
for article_list in List.objects.all():
article_dict = {}
article_dict['news_object'] = article_list
article_dict['item_count'] = article_list.item_set.count()
article_dict ['items_title'] = article_list.title
article_dict ['items_complete'] = article_list.item_set.filter (completed=True).count()
article_dict ['percent_complete'] =
int (float(article_dict['items_complete']) / article_dict['item_count'] * 100)
article_listing.append (article_dict)
return render_to_response ('news_report.html', { 'article_listing': article_listing })

ÕâÊÇÒ»¶Î¼ò½àµÄPython´úÂ룬ÈÃÎÒÃÇ¿´¿´ÔÚÕâ¶Î´úÂëÀïÃæDjangoµÄº¯Êý×öÁËÄÄЩ¹¤×÷°É£º

List.objects.all·½·¨·µ»ØnewsÁбíÖÐËùÓеļǼÏDjango¿ÉÒÔ¸ù¾Ýºǫ́Êý¾Ý¿âת»»³ÉÏàÓ¦µÄSQLÓï¾ä£¬ÔÚºǫ́Êý¾Ý¿âÖÐÖ´Ðв¢·µ»Ø²éѯ½á¹û¡£

ÿһÌõarticleÎÄÕ¶¼ÓÐitem_setÊôÐÔ£¬´ú±ínewsÐÂÎÅÌõÄ¿ÖеÄÿһ¸öitemÏî¡£Èç¹ûÐèÒªÉèÖòéѯÌõ¼þ£¬Ò²¿ÉÒÔʹÓÃitem_set.filter·½·¨À´·µ»Ø·ûºÏÌØ¶¨ÒªÇóµÄitemÏî¡£

render_to_responseº¯Êý·µ»Øä¯ÀÀÆ÷Ö¸¶¨µÄHTMLÒ³Ãæ£¬Ò³ÃæÎªDjangoµÄTemplateÄ£°å£¬¸ºÔðչʾ±»ÇëÇóµÄÒ³ÃæÄÚÈÝ¡£

ÔÚview²¿·ÖµÄ´úÂëÖУ¬ÒѾ­Ö¸¶¨ÁËÒ³ÃæÏÔʾģ°åΪnews_report.html¡£Æäʵ£¬ÔÚDjango¹¤³ÌÖд´½¨Ä£°åÊÇÒ»¼þ·Ç³£·½±ãµÄÊÂÇ飬ÏÂÃæÒªÔÚarticleĿ¼ÄÚ´´½¨Õâ¸öÄ£°åÒ³Ãæ£¬Ê×ÏÈн¨Ò»¸öÃûΪtemplatesµÄÎļþ¼Ð£¬È»ºóÔÚÕâ¸öÄ£°åĿ¼Àï´´½¨ËùÐèµÄnews_report.htmlÄ£°åÎļþ£¬Ä£°åµÄ´úÂëÈçÏ£º

Çåµ¥ £µ. news_reportÄ£°å´úÂë

<html>
<head>
<meta http-equiv="Content-Type" content="text/html" />
<title>ÐÂÎÅͳ¼ÆÁбí</title>
</head>
<body>
<h1>ÐÂÎÅͳ¼ÆÁбí</h1>
{% for list_dict in article_listing %}
<ul>
<li>ÐÂÎŵķÖÀà: {{ list_dict.items_title }}</li>
<li>ÐÂÎŵÄÊýÄ¿: {{ list_dict.item_count }}</li>
<li>ÒÑ·¢²¼µÄÐÂÎÅÊýÄ¿:
{{ list_dict.items_complete }} ({{ list_dict.percent_complete }}%)</li>
</ul>
{% endfor %}
</body>
</html>

Ò»°ãÀ´Ëµ£¬DjangoµÄÄ£°å´úÂëºÍÆÕͨµÄHTML´úÂë¿´ÉÏȥûÓÐÌ«´ó²î±ð£¬Ö»ÊÇÌí¼ÓÁËDjangoÌØ¶¨µÄÄ£°å±ê¼Ç£¬ÕâЩ±ê¼ÇÔÊÐí¿ª·¢ÕßΪDjangoÄ£°åÌí¼ÓÒ³ÃæÂß¼­£¬±È·½Ëµ½«views.pyÖÐrender_to_responseº¯Êý·µ»ØµÄÊý¾Ý¿â½á¹û¼¯ÏÔʾÔÚÒ³ÃæÖУ¬DjangoÌØÓеıêÇ©ÔÚÄ£°åÒ³ÀïÒÔ¡°{%¡±×÷Ϊ¿ªÊ¼²¢ÒÔ¡°%}¡±×÷Ϊ½áÊø¡£Ç¶ÈëDjangoÄ£°åµÄ±äÁ¿ÔòÒÔ¡°{{¡±×÷Ϊ¿ªÊ¼²¢ÒÔ¡°}}¡±½áÊø¡£

ÔÚÉÏÃæµÄÄ£°å´úÂëÀïÃæ£¬Óõ½Á˱ê¼Ç{% for news_dict in article_listing %}ÒÔ¼°{% endfor %}¡£ÕâÑùµÄ±ê¼Ç¸æËßDjangoÄ£°å´¦Àí»úÖÆÑ­»·È¡³önewsÖеÄitemÏîÊä³öÔÚÒ³ÃæÖУ¬ÔÚforÑ­»·ÄÚ²¿£¬Í¨¹ýarticle_listingµÄÊôÐԵõ½ViewÖжÔÓ¦µÄÊý¾ÝÏî×ֶεÄÖµ²¢ÏÔʾÿ¸önewsÏîµÄTitle±êÌâÒÔ¼°newsÖеÄitemÏîÊýÄ¿¡£

µ±DjangoµÄViewºÍTemplate¶¼ÒѾ­×¼±¸Í×µ±£¬ÏÂÃæ½öÐèÒª¼¸²½ÅäÖÃÀ´¸æËßDjango´æ´¢¹¤³ÌÓ¦ÓõÄÄ£°åλÖã¬ÕâÐèÒª¶ÔÅäÖÃÎļþsetting.pyÖеÄTEMPLATE_DIRSÏî½øÐÐÉèÖá£ÔÚ±¾ÀýÖмÓÈëÄ£°åÎļþ"news_report.html"µÄ´æ´¢Â·¾¶¾Í¿ÉÒÔÈÃDjango°Ñ¶ÔView½øÐд¦ÀíµÄ½á¹û¼¯Í¨¹ýÖ¸¶¨Ä£°å·µ»Ø¡£°´ÕÕ±¾ÀýÓ¦ÓõĽṹ£¬TEMPLATE_DIRS²ÎÊýµÄÄÚÈÝÉèÖÃΪ£º

'./article/templates',

ÕâÀï²»ÒªÍü¼ÇDjangoÐèÒªÔÚ·¾¶µÄ×îĩβÌí¼ÓÒ»¸ö¶ººÅ¡£½ÓÏÂÀ´½öÐèÒªÉèÖ÷ÃÎÊarticleʱµÄURLתÏòµØÖ·¾Í¿ÉÒÔ¡£´ò¿ªurls.pyÎļþ£¬ÔÚadminºǫ́¹ÜÀíµÄתÏòµØÖ·ÏÂÒ»ÐÐÌí¼ÓÈçÏÂÓï¾ä£º

(r'^report/$', 'news.article.views.news_report'),

ÔÚÕâÀïÓï¶ÎµÄ×îĩ⣬ҲÐèÒªÓжººÅ±ê¼Ç¶ÎÂäµÄ½áÊø¡£ÔÚÕâÀï¿ÉÒÔ¿´µ½£¬DjangoµÄURLת·¢Éè¼ÆµÄ·Ç³£¼ò½à£¬ÔÚÅäÖÃÎļþurls.pyÖжÔÓ¦ÓÚviewµÄת·¢ÇëÇó¶¼ÓÉÁ½²¿·Ö×é³É£¬µÚÒ»²¿·Ö×ñÑ­ÕýÔò±í´ïʽָ¶¨ÏàÆ¥ÅäµÄURLµØÖ·£¬µÚ¶þ²¿·ÖÊǶÔÓ¦ÔÚViewÀïÃæ´¦Àíת·¢ÇëÇóµÄº¯Êý¡£

Íê³ÉÁËÕâЩ²½Ö裬¾Í¿ÉÒÔÔÚÃüÁîÌáʾ·ûÏÂÔÙ´ÎÆô¶¯Django·þÎñÆ÷£¬¿´Ò»ÏÂÉÏÊöŬÁ¦µÄ³É¹ûÁË£¬ÔÚä¯ÀÀÆ÷Öдò¿ªÁ´½Óhttp://127.0.0.1:8000/report/£¬½«»á¿´µ½ÐÂÎÅÁбíµÄ·µ»Ø½çÃæ¡£Ò³ÃæÖÐÏÔʾÁËÊý¾Ý¿âÖÐÒÑÌí¼ÓËùÓÐÐÂÎŵķÖÀàͳ¼ÆÐÅÏ¢¡£ÖµµÃÒ»ÌáµÄÊÇ£¬DjangoÄ£°åÖ§³Ö¶à²ãǶÌ×£¬²¢ÇÒÿһ²ã¶¼¿ÉÒÔʹÓÃDIV+CSS·½Ê½Íê³É²¼¾Ö£¬¿ÉÒÔ·½±ãµÄÈÃÕ¾µãÒ³Ãæ×ñѭͳһ·ç¸ñ£¬¿´ÆðÀ´ÃÀ¹Û´ó·½¡£

ÔÚÉÏÊöÕû¸ö¹ý³ÌÖУ¬¶ÔʹÓÃDjango½øÐÐWeb¿ª·¢½øÐÐÁ˳õ²½µÄ½éÉÜ¡£ÔÚÓ¦ÓÃÖÐдµÄPython´úÂë²»¹ý¼¸Ê®ÐУ¬±È½ÏÆðÀ´ÆäËûµÄ¿ª·¢ÓïÑÔ£¬DjangoÏԵ÷dz£±ã½ÝʵÓã¬×îºóÔÙÀ´»Ø¹ËÒ»ÏÂDjango¶¼°ïÖúÎÒÃÇ×öÁËÄÄЩ¹¤×÷°É£º

ͨ¹ýDjangoµÄ¶ÔÏó¹ØÏµÓ³ÉäÄ£Ðͽ¨Á¢ÁË´æ´¢ÐÂÎÅ·ÖÀàÒÔ¼°ÐÂÎÅÏîµÄÁ½ÕÅÊý¾Ý±í£¬²¢ÓÃsyncdbÃüÁîͬ²½¸üе½Êý¾Ý¿â¡£

½èÖúDjangoµÄ¹ÜÀí¹¦ÄÜÔÚÓ¦ÓÃÖÐÉú³ÉÁËÒ»¸öƯÁÁʵÓõĺǫ́¹ÜÀí½çÃæ¡£

ÀûÓÃDjangoº¯ÊýºÍ±êÇ©±àдÁËview¹¦ÄÜÄ£¿éÒÔ¼°ÏÔʾÊý¾Ý½á¹ûµÄTemplateÄ£°å¡£

½áÊøÓï

Django¿ª·¢¿ò¼ÜµÄ³öÏÖ£¬Èñ¾ÀýËùÓеÄÕâЩ¹¤×÷±äµÃ¼ò½àÓÐÐò¡¢ÉÍÐÄÔÃÄ¿¡£Ëæ×ÅDjango¿ª·¢¿ò¼ÜµÄ²»¶Ï·¢Õ¹£¬¸ü¶àеÄÌØÐÔ½«Öð²½±»Ìí¼Óµ½¿ò¼ÜÌåϵÖÐÀ´¡£¿ÉÒÔ²»¿äÕŵÄ˵£¬DjangoÒѾ­´ÓRORµÄDZÔÚ¾ºÕùÕߣ¬Ö𽥳ɳ¤Îª¿ÉÒÔÓëÖ®Õë·æÏà¶ÔµÄPython¿ò¼Ü¡£Èç¹û˵ÓëRuby¿ò¼ÜRORµÄ²î¾à£¬»òÐíDjangoĿǰ×îȱÉٵϹÊÇRORÄÇÅÓ´óµÄÓû§ÈºÌå¡£

Èç¹û¿´ÍêÕâÆªÎÄÕ£¬¶ÁÕß´òËãÒ»²½Ò»²½½øÈëDjangoµÄ¾«²ÊÊÀ½ç£¬¿ÉÒÔÔÚDjango¹Ù·½Õ¾µãwww.djangoproject.comÉÏÔĶÁ¸ü¶àµÄ¿ª·¢Îĵµ¡¢¶©ÔÄGoogle GroupÉϵÄDjangoÓʼþÌÖÂÛ×飬»òÕ߸úËæDjango¹Ù·½µÄ½Ì³ÌÖ¸ÄϽøÐÐѧϰ£¬¿ªÊ¼Ò»´ÎÈÃ˼Ïë×ÔÓɰ¿ÏèµÄÂọ́¬ÏàÐÅÔÚÕâ¸ö¹ý³ÌÖÐÊÕ»ñµÄ²»½ö½öÊÇʹÓÃDjango¿ª·¢µÄÐÂÆæÌåÑé¡£

Ï£ÍûÓиü¶àµÄ¶ÁÕßÀ´Ê¹ÓÃDjango¿ò¼Ü£¬Ï£ÍûÓиü¶àµÄÈËÀ´Ò»ÆðÀ´¹Ø×¢DjangoµÄ·¢Õ¹£¬ÉõÖÁ²ÎÓëµ½DjangoµÄÏîÄ¿¿ª·¢µ±ÖУ¬Îª¿ªÔ´µÄÉçÇø¹±Ï×Ò»·ÝÁ¦Á¿¡£ÆÚ´ýDjango¿ìËÙ·¢Õ¹µÄÃ÷Ìì¡¢ÆÚ´ýPythonʵÏÖµÄRails¿ò¼Ü½«»áÓÐѤÀöµÄδÀ´£¡

 

   
3026 ´Îä¯ÀÀ       28
Ïà¹ØÎÄÕÂ

ÊÖ»úÈí¼þ²âÊÔÓÃÀýÉè¼ÆÊµ¼ù
ÊÖ»ú¿Í»§¶ËUI²âÊÔ·ÖÎö
iPhoneÏûÏ¢ÍÆËÍ»úÖÆÊµÏÖÓë̽ÌÖ
AndroidÊÖ»ú¿ª·¢£¨Ò»£©
Ïà¹ØÎĵµ

Android_UI¹Ù·½Éè¼Æ½Ì³Ì
ÊÖ»ú¿ª·¢Æ½Ì¨½éÉÜ
androidÅÄÕÕ¼°ÉÏ´«¹¦ÄÜ
Android½²ÒåÖÇÄÜÊÖ»ú¿ª·¢
Ïà¹Ø¿Î³Ì

Android¸ß¼¶Òƶ¯Ó¦ÓóÌÐò
Androidϵͳ¿ª·¢
AndroidÓ¦Óÿª·¢
ÊÖ»úÈí¼þ²âÊÔ