综合二区_欧美成人综合_欧美成人二区_a黄视频_亚洲视频在线播放_一区二区三区视频免费看

µ±Ç°Î»ÖãºÊ×Ò³ > ÍøÕ¾¾ÉÀ¸Ä¿ > ѧϰ԰µØ > Éè¼ÆÈí¼þ½Ì³Ì > ·­Òëwww.djangobook.comÖ®µÚËÄÕ£ºDjangoÄ£°åϵͳ

·­Òëwww.djangobook.comÖ®µÚËÄÕ£ºDjangoÄ£°åϵͳ
2010-01-13 23:35:21  ×÷Õß:  À´Ô´:
Ç°ÃæµÄÕ½ÚÎÒÃÇ¿´µ½ÈçºÎÔÚÊÓͼÖзµ»ØHTML£¬µ«ÊÇHTMLÊÇÓ²±àÂëÔÚPython´úÂëÖеÄ
Õâ»áµ¼Ö¼¸¸öÎÊÌ⣺
1£¬ÏÔÈ»£¬ÈκÎÒ³ÃæµÄ¸Ä¶¯»áÇ£³¶µ½Python´úÂëµÄ¸Ä¶¯
ÍøÕ¾µÄÉè¼Æ¸Ä¶¯»á±ÈPython´úÂë¸Ä¶¯¸üƵ·±£¬ËùÒÔÈç¹ûÎÒÃǽ«Á½Õß·ÖÀ뿪»á¸ü·½±ã
2£¬Æä´Î£¬Ð´ºǫ́Python´úÂëÓëÉè¼ÆHTMLÊDz»Í¬µÄ¹¤×÷£¬¸üרҵµÄWeb¿ª·¢Ó¦¸Ã½«Á½Õß·Ö¿ª
Ò³ÃæÉè¼ÆÕߺÍHTML/CSS³ÌÐòÔ±²»Ó¦¸Ã±à¼­Python´úÂ룬ËûÃÇÓ¦¸ÃÓëHTML´ò½»µÀ
3£¬³ÌÐòԱдPython´úÂëÍ¬Ê±Ò³ÃæÉè¼ÆÕßдHTMLÄ£°å»á¸ü¸ßЧ£¬¶ø²»ÊÇÒ»¸öÈ˵ȴýÁíÒ»¸öÈ˱༭ͬÑùµÄÎļþ
Òò´Ë£¬Ê¹ÓÃDjangoµÄÄ£°åϵͳ·ÖÀëÉè¼ÆºÍPython´úÂë»á¸ü¸É¾»¸üÒ×ά»¤

Ä£°åϵͳ»ù´¡
DjangoÄ£°åÊÇÒ»¸östringÎı¾£¬ËüÓÃÀ´·ÖÀëÒ»¸öÎĵµµÄÕ¹ÏÖºÍÊý¾Ý
Ä£°å¶¨ÒåÁËplaceholderºÍ±íʾ¶àÖÖÂß¼­µÄtagsÀ´¹æ¶¨ÎĵµÈçºÎÕ¹ÏÖ
ͨ³£Ä£°åÓÃÀ´Êä³öHTML£¬µ«ÊÇDjangoÄ£°åÒ²ÄÜÉú³ÉÆäËü»ùÓÚÎı¾µÄÐÎʽ
ÈÃÎÒÃÇÀ´¿´¿´Ò»¸ö¼òµ¥µÄÄ£°åÀý×Ó£º
Java´úÂë ¸´ÖÆ´úÂë
  1. <html>   
  2. <head><title>Ordering notice</title></head>   
  3. <body>   
  4. <p>Dear {{ person_name }},</p>   
  5. <p>Thanks for placing an order from {{ company }}. It's scheduled to   
  6. ship on {{ ship_date|date:"F j, Y" }}.</p>   
  7. <p>Here are the items you've ordered:</p>   
  8. <ul>   
  9. {% for item in item_list %}   
  10. <li>{{ item }}</li>   
  11. {% endfor %}   
  12. </ul>   
  13. {% if ordered_warranty %}   
  14. <p>Your warranty information will be included in the packaging.</p>   
  15. {% endif %}   
  16. <p>Sincerely,<br />{{ company }}</p>   
  17. </body>   
  18. </html>  

Õâ¸öÄ£°å±¾ÖÊÉÏÊÇHTML£¬µ«ÊǼÐÔÓÁËһЩ±äÁ¿ºÍÄ£°å±êÇ©£º
1£¬ÓÃ{{}}°üΧµÄÊDZäÁ¿£¬Èç{{person_name}}£¬Õâ±íʾ°Ñ¸ø¶¨±äÁ¿µÄÖµ²åÈ룬ÈçºÎÖ¸¶¨ÕâЩ±äÁ¿µÄÖµÎÒÃǼ´½«ËµÃ÷
2£¬ÓÃ{%%}°üΧµÄÊÇ¿é±êÇ©£¬Èç{%if ordered_warranty%}
¿é±êÇ©µÄº¬ÒåºÜ·á¸»£¬Ëü¸æËßÄ£°åϵͳ×öһЩÊÂÇé
ÔÚÕâ¸öÀý×ÓÄ£°åÖаüº¬Á½¸ö¿é±êÇ©:for±êÇ©±íÏÖΪһ¸ö¼òµ¥µÄÑ­»·½á¹¹£¬ÈÃÄ㰴˳Ðò±éÀúÿÌõÊý¾Ý
if±êÇ©Ôò±íÏÖΪÂß¼­µÄifÓï¾ä
ÔÚÕâÀÉÏÃæµÄ±êÇ©¼ì²éordered_warranty±äÁ¿µÄÖµÊÇ·ñΪTrue
Èç¹ûÊÇTrue£¬Ä£°åϵͳ»áÏÔʾ{%if ordered_warranty%}ºÍ{%endif%}Ö®¼äµÄÄÚÈÝ
·ñÔò£¬Ä£°åϵͳ²»»áÏÔʾÕâЩÄÚÈÝ
Ä£°åϵͳҲ֧³Ö{%else%}µÈÆäËüÂß¼­Óï¾ä
3£¬ÉÏÃæ»¹ÓÐÒ»¸ö¹ýÂËÆ÷µÄÀý×Ó£¬¹ýÂËÆ÷ÊǸıä±äÁ¿ÏÔʾµÄ·½Ê½
ÉÏÃæµÄÀý×ÓÖÐ{{ship_date|date:"F j, Y"}}°Ñship_date±äÁ¿´«µÝ¸ø¹ýÂËÆ÷
²¢¸ødate¹ýÂËÆ÷´«µÝÁËÒ»¸ö²ÎÊý“F j, Y”£¬date¹ýÂËÆ÷ÒÔ¸ø¶¨²ÎÊýµÄÐÎʽ¸ñʽ»¯ÈÕÆÚ
ÀàËÆÓÚUnix£¬¹ýÂËÆ÷ʹÓùܵÀ×Ö·û“|”
DjangoÄ£°åÖ§³Ö¶àÖÖÄÚ½¨µÄ¿é±êÇ©£¬²¢ÇÒÄã¿ÉÒÔдÄã×Ô¼ºµÄ±êÇ©

ʹÓÃÄ£°åϵͳ
ÔÚPython´úÂëÖÐʹÓÃÄ£°åϵͳ£¬Çë°´ÕÕÏÂÃæµÄ²½Ö裺
1£¬ÓÃÄ£°å´úÂë´´½¨Ò»¸öTemplate¶ÔÏó
DjangoÒ²Ìṩָ¶¨Ä£°åÎļþ·¾¶µÄ·½Ê½´´½¨Template¶ÔÏó
2£¬Ê¹ÓÃһЩ¸ø¶¨±äÁ¿contextµ÷ÓÃTemplate¶ÔÏóµÄrender()·½·¨
Õ⽫·µ»ØÒ»¸öÍêÈ«äÖȾµÄÄ£°å£¬ËüÊÇÒ»¸östring£¬ÆäÖÐËùÓеıäÁ¿ºÍ¿é±êÇ©¶¼»á¸ù¾ÝcontextµÃµ½Öµ

´´½¨Ä£°å¶ÔÏó
×î¼òµ¥µÄ·½Ê½ÊÇÖ±½Ó³õʼ»¯Ëü£¬TemplateÀàÔÚdjango.templateÄ£¿éÖУ¬³õʼ»¯·½·¨ÐèÒªÒ»¸ö²ÎÊý
ÏÂÃæ½øÈëPython½»»¥»·¾³¿´¿´£º
Java´úÂë ¸´ÖÆ´úÂë
  1. >>> from django.template import Template   
  2. >>> t = Template("My name is {{my_name}}.")   
  3. >>> print t  

Ä㽫¿´µ½ÈçÏÂÐÅÏ¢
Java´úÂë ¸´ÖÆ´úÂë
  1. <django.template.Template object at 0xb7d5f24c>  

0xb7d5f24cÿ´Î¶¼»á¸Ä±ä£¬µ«ÊÇÎÞËùν£¬ËüÊÇTemplate¶ÔÏóµÄPython“identity”
ÔÚÕâ±¾ÊéÖУ¬ÎÒÃÇ»áÔÚPythonµÄ½»»¥Ê½»á»°»·¾³ÖÐչʾһЩʾÀý¡£µ±Äã¿´µ½Èý¸ö´óÓÚºÅ'>>>'£¬¾Í¿ÉÒÔÈ·¶¨ÊÇÔÚ½»»¥»·¾³ÖÐÁË¡£
Èç¹ûÄã´Ó±¾ÊéÖп½±´´úÂ룬¼ÇµÃ²»Òª¿½±´ÕâЩ´óÓںš£
µ±Äã´´½¨Template¶ÔÏó£¬Ä£°åϵͳ»á±àÒëÄ£°å´úÂ룬²¢×¼±¸äÖȾ
Èç¹ûÄãµÄÄ£°å´úÂëÓÐÓï·¨´íÎ󣬵÷ÓÃTemplate()·½·¨»á´¥·¢TemplateSyntaxErrorÒì³£
Java´úÂë ¸´ÖÆ´úÂë
  1. >>> from django.template import Template   
  2. >>> t = Template('{%notatag%}')   
  3. Traceback (most recent call last):   
  4.     File "<stdin>", line 1, in ?   
  5.     ...   
  6.    django.template.TemplateSyntaxError: Invalid block tag: 'notatag'  

ϵͳ´¥·¢TemplateSyntaxErrorÒì³£¿ÉÄܳöÓÚÒÔÏÂÇé¿ö£º
1£¬²»ºÏ·¨µÄ¿é±êÇ©
2£¬ºÏ·¨¿é±êÇ©½ÓÊܲ»ºÏ·¨µÄ²ÎÊý
3£¬²»ºÏ·¨µÄ¹ýÂËÆ÷
4£¬ºÏ·¨¹ýÂËÆ÷½ÓÊܲ»ºÏ·¨µÄ²ÎÊý
5£¬²»ºÏ·¨µÄÄ£°åÓï·¨
6£¬¿é±êǩû¹Ø

äÖȾģ°å
Ò»µ©ÄãÓµÓÐÒ»¸öTemplate¶ÔÏó£¬Äã¿ÉÒÔͨ¹ý¸øÒ»¸öcontextÀ´¸øËü´«µÝÊý¾Ý
contextÊÇÒ»¸ö±äÁ¿¼°¸³ÓèµÄÖµµÄ¼¯ºÏ£¬Ä£°åʹÓÃËüÀ´µÃµ½±äÁ¿µÄÖµ£¬»òÕß¶ÔÓÚ¿é±êÇ©ÇóÖµ
Õâ¸öcontextÓÉdjango.templateÄ£¿éµÄContextÀà±íʾ
ËüµÄ³õʼ»¯º¯ÊýÓÐÒ»¸ö¿ÉÑ¡µÄ²ÎÊý£ºÒ»¸öÓ³Éä±äÁ¿ÃûºÍ±äÁ¿ÖµµÄ×Öµä
ͨ¹ýcontextµ÷ÓÃTemplate¶ÔÏóµÄrender()·½·¨À´Ìî³äÄ£°å£¬ÀýÈ磺
Java´úÂë ¸´ÖÆ´úÂë
  1. >>> from django.template import Context, Template   
  2. >>> t = Template("My name is {{name}}.")   
  3. >>> c = Context({"name""Stephane"})   
  4. >>> t.render(c)   
  5. 'My name is Stephane.'  

±äÁ¿Ãû±ØÐëÒÔ×Öĸ(A-Z»òa-z)¿ªÊ¼£¬¿ÉÒÔ°üº¬Êý×Ö£¬Ï»®ÏߺÍСÊýµã£¬±äÁ¿Ãû´óСдÃô¸Ð
ÏÂÃæÊÇÒ»¸öÄ£°å±àÒëºÍäÖȾµÄÀý×Ó£¬Ê¹ÓÃÕâÕ¿ªÊ¼Ê±µÄÄ£°åÀý×Ó£º
Java´úÂë ¸´ÖÆ´úÂë
  1. >>> from django.template import Template, Context   
  2. >>> raw_template = """<p>Dear {{ person_name }},</p>   
  3. ...   
  4. ... <p>Thanks for ordering {{ product }} from {{ company }}. It's scheduled to   
  5. ... ship on {{ ship_date|date:"F j, Y" }}.</p>   
  6. ...   
  7. ... {% if ordered_warranty %}   
  8. ... <p>Your warranty information will be included in the packaging.</p>   
  9. ... {% endif %}   
  10. ...   
  11. ... <p>Sincerely,<br />{{ company }}</p>"""   
  12. >>> t = Template(raw_template)   
  13. >>> import datetime   
  14. >>> c = Context({'person_name''John Smith',   
  15. ...     'product''Super Lawn Mower',   
  16. ...     'company''Outdoor Equipment',   
  17. ...     'ship_date': datetime.date(200942),   
  18. ...     'ordered_warranty': True})   
  19. >>> t.render(c)   
  20. "<p>Dear John Smith,</p>\n\n<p>Thanks for ordering Super Lawn Mower from Outdoor Equipment.   
  21. It's scheduled to ship on April 22009.</p>\n\n<p>Your warranty information will be included   
  22. in the packaging.</p>\n\n\n<p>Sincerely,<br />Outdoor Equipment</p>"  

ÈÃÎÒÃÇÀ´¿´¿´¶¼×öÁËЩʲô£º
1£¬ÎÒÃÇimport TemplateºÍContextÀ࣬ËüÃǶ¼ÔÚdjango.templateÄ£¿éÀïÃæ
2£¬ÎÒÃǰÑÄ£°åÎı¾´æ´¢ÔÚraw_template±äÁ¿ÀÎÒÃÇʹÓÃ"""À´¹¹½¨string£¬Ëü¿ÉÒÔ¿çÔ½¶àÐÐ
3£¬ÎÒÃÇ´´½¨Ä£°å¶ÔÏót£¬²¢¸øTemplateÀàµÄ³õʼ»¯º¯Êý´«µÝraw_template±äÁ¿
4£¬ÎÒÃÇ´ÓPythonµÄ±ê×¼¿âimport datetimeÄ£¿é£¬ÏÂÃæ»áÓõ½Ëü
5£¬ÎÒÃÇ´´½¨Ò»¸öcontext¶ÔÏóc£¬ËüµÄ³õʼ»¯º¯ÊýʹÓÃÒ»¸öÓ³Éä±äÁ¿ÃûºÍ±äÁ¿ÖµµÄ×Öµä
ÀýÈçÎÒÃÇÖ¸¶¨person_nameµÄֵΪ'John Smith'£¬productµÄֵΪ'Super Lawn Mower'µÈµÈ
6£¬×îºó£¬ÎÒÃǵ÷ÓÃÄ£°å¶ÔÏóµÄrender()·½·¨£¬²ÎÊýΪcontext¶ÔÏóc
Õ⽫·µ»ØäÖȾºóµÄÄ£°å£¬½«Ä£°åÖеıäÁ¿ÖµÌæ»»²¢¼ÆËã¿é±êÇ©µÄ½á¹û
Èç¹ûÄã¸Õ½Ó´¥Python£¬Äã¿ÉÄÜ»áÎÊΪʲôÊä³öÖаüº¬ÁËÐÂÐÐ×Ö·û'\n'¶ø²»ÊÇ»»ÐÐ
ÕâÊÇÒòΪPython½»»¥»·¾³Öе÷ÓÃt.render(c)»áÏÔʾstringµÄrepresentation¶ø²»ÊÇstringµÄÖµ
Èç¹ûÄãÏë¿´µ½»»Ðжø²»ÊÇ'\n'£¬Ê¹ÓÃprint t.render(c)¼´¿É
ÉÏÃæÊÇʹÓÃDjangoÄ£°åϵͳµÄ»ù´¡£¬Ö»ÊÇ´´½¨Ò»¸öÄ£°å¶ÔÏóºÍcontext¶ÔÏóÈ»ºóµ÷ÓÃrender()·½·¨
ͬһ¸öÄ£°å£¬¶à¸öcontextµÄÇé¿ö£º
Ò»µ©Äã´´½¨ÁËÒ»¸öÄ£°å¶ÔÏó£¬Äã¿ÉÒÔäÖȾ¶à¸öcontext£¬ÀýÈ磺
Java´úÂë ¸´ÖÆ´úÂë
  1. >>> from django.template import Template, Context   
  2. >>> t = Template('Hello, {{ name }}')   
  3. >>> print t.render(Context({'name''John'}))   
  4. Hello, John   
  5. >>> print t.render(Context({'name''Julie'}))   
  6. Hello, Julie   
  7. >>> print t.render(Context({'name''Pat'}))   
  8. Hello, Pat  

ÎÞÂÛºÎʱ£¬ÄãʹÓÃͬһ¸öÄ£°åÀ´äÖȾ¶à¸öcontextµÄ»°£¬´´½¨Ò»´ÎTemplate¶ÔÏóÈ»ºóµ÷ÓÃrender()¶à´Î»á¸ü¸ßЧ
Java´úÂë ¸´ÖÆ´úÂë
  1. # Bad   
  2. for name in ('John''Julie''Pat'):   
  3.     t = Template('Hello, {{ name }}')   
  4.     print t.render(Context({'name'£º name}))   
  5. # Good   
  6. t = Template('Hello, {{ name }}')   
  7. for name in ('John''Julie''Pat'):   
  8.     print t.render(Context({'name': name}))  

DjangoµÄÄ£°å½âÎö·Ç³£¿ì£¬ÔÚºǫ́£¬´ó²¿·ÖµÄ½âÎöͨ¹ýÒ»¸öµ¥¶ÀµÄ¶ÔÕýÔò±í´ïʽµÄµ÷ÓÃÀ´×ö
ÕâÓë»ùÓÚXMLµÄÄ£°åÒýÇæÐγÉÏÊÃ÷¶Ô±È£¬XML½âÎöÆ÷±ÈDjangoµÄÄ£°åäÖȾϵͳÂýºÜ¶à

Context±äÁ¿²éÕÒ
ÉÏÃæµÄÀý×ÓÖУ¬ÎÒÃǸøÄ£°åcontext´«µÝÁ˼òµ¥µÄÖµ£¬´ó²¿·ÖÊÇstring£¬ÒÔ¼°Ò»¸ödatetime.date
¾¡¹ÜÈç´Ë£¬Ä£°åϵͳÓÅÑŵĴ¦Àí¸ü¸´ÔÓµÄÊý¾Ý½á¹¹£¬ÈçÁÐ±í£¬×ÖµäºÍ×Ô¶¨Òå¶ÔÏó
ÔÚDjangoÄ£°åϵͳÖд¦Àí¸´ÔÓÊý¾Ý½á¹¹µÄ¹Ø¼üÊÇʹÓÃ(.)×Ö·û
ʹÓÃСÊýµãÀ´µÃµ½×ÖµäµÄkey£¬ÊôÐÔ£¬¶ÔÏóµÄË÷ÒýºÍ·½·¨
ÏÂÃæÍ¨¹ýÀý×ÓÀ´½âÊÍ£¬Í¨¹ý(.)·ÃÎÊ×ÖµäµÄkey£º
Java´úÂë ¸´ÖÆ´úÂë
  1. >>> from django.template import Template, Context   
  2. >>> person = {'name''Sally''age''43'}   
  3. >>> t = Template('{{ person.name }} is {{ person.age }} years old.')   
  4. >>> c= Context({'person': person})   
  5. >>> t.render(c)   
  6. 'Sally is 43 years old.'  

ͨ¹ý(.)À´·ÃÎʶÔÏóµÄÊôÐÔ£º
Java´úÂë ¸´ÖÆ´úÂë
  1. >>> from django.template import Template, Context   
  2. >>> import datetime   
  3. >>> d = datetime.date(199352)   
  4. >>> d.year   
  5. 1993  
  6. >>> d.month   
  7. 5  
  8. >>> d.day   
  9. 2  
  10. >>> t = Template('The month is {{ date.month }} and the year is {{ date.year }}.')   
  11. >>> c = Context({'date': d})   
  12. >>> t.render(c)   
  13. 'The month is 5 and the year is 1993.'  

ÏÂÃæµÄÀý×ÓʹÓÃÒ»¸ö×Ô¶¨ÒåÀࣺ
Java´úÂë ¸´ÖÆ´úÂë
  1. >>> from django.template import Template, Context   
  2. >>> class Person(object):   
  3. ...    def __init__(self, first_name, last_name):   
  4. ...        self.first_name, self.last_name = first_name, last_name   
  5. >>> t = Template('Hello, {{ person.first_name }} {{ person.last_name }}.')   
  6. >>> c = Context({'person': Person('John''Smith')})   
  7. >>> t.render(c)   
  8. 'Hello, John Smith.'  

СÊýµãÒ²¿ÉÒÔÓÃÀ´µ÷ÓÃÁбíµÄË÷Òý£º
Java´úÂë ¸´ÖÆ´úÂë
  1. >>> from django.template import Template, Context   
  2. >>> t = Template('Item 2 is {{ items.2 }}.')   
  3. >>> c = Contexst({'items': ['apples''bananas''carrots']})   
  4. >>> t.render(c)   
  5. 'Item 2 is carrots.'  

¸ºÊýµÄÁбíË÷ÒýÊDz»ÔÊÐíµÄ£¬ÀýÈçÄ£°å±äÁ¿{{ items.-1 }}½«´¥·¢TemplateSyntaxError
×îºóСÊýµã»¹¿ÉÒÔÓÃÀ´·ÃÎʶÔÏóµÄ·½·¨£¬ÀýÈçPythonµÄstringÓÐupper()ºÍisdigit()·½·¨£º
Java´úÂë ¸´ÖÆ´úÂë
  1. >>> from django.template import Template, Context   
  2. >>> t = Template('{{ var }} -- {{var.upper }} -- {{ var.isdigit }}')   
  3. >>> t.render(Context({'var''hello'}))   
  4. 'hello -- HELLO -- False'  
  5. >>> t.render(Context({'var''123'}))   
  6. '123 - 123 - True'  

×¢Ò⣬µ÷Ó÷½·¨Ê±Äã²»ÄܼÓÀ¨ºÅ£¬ÄãÒ²²»Äܸø·½·¨´«µÝ²ÎÊý
ÄãÖ»Äܵ÷ÓÃûÓвÎÊýµÄ·½·¨£¬ºóÃæÎÒÃÇ»á½âÊÍÕâЩ
×ܽáһϣ¬µ±Ä£°åϵͳÓöµ½±äÁ¿ÃûÀïÓÐСÊýµãʱ»á°´ÒÔÏÂ˳Ðò²éÕÒ£º
1£¬×Öµä²éÕÒ£¬Èçfoo["bar"]
2£¬ÊôÐÔ²éÕÒ£¬Èçfoo.bar
3£¬·½·¨µ÷Óã¬Èçfoo.bar()
3£¬ÁбíµÄË÷Òý²éÕÒ£¬Èçfoo[bar]
СÊýµã¿ÉÒԶ༶×ÝÉî²éѯ£¬ÀýÈç{{ person.name.upper }}±íʾ×Öµä²éѯperson['name']È»ºóµ÷ÓÃupper()·½·¨
Java´úÂë ¸´ÖÆ´úÂë
  1. >>> from django.template import Template, Context   
  2. >>> person = {'name''Sally''age''43'}   
  3. >>> t = Template('{{ person.name.upper }} is {{ person.age }} years old.')   
  4. >>> c = Context({'person': person})   
  5. >>> t.render(c)   
  6. 'SALLY is 43 years old.'  


¹ØÓÚ·½·¨µ÷ÓÃ
·½·¨µ÷ÓÃÒª±ÈÆäËûµÄ²éѯÉÔ΢¸´ÔÓÒ»µã£¬ÏÂÃæÊÇÐèÒª¼ÇסµÄ¼¸µã£º
1£¬ÔÚ·½·¨²éѯµÄʱºò£¬Èç¹ûÒ»¸ö·½·¨´¥·¢ÁËÒì³££¬Õâ¸öÒì³£»á´«µÝ´Ó¶øµ¼ÖÂäÖȾʧ
°Ü£¬µ«ÊÇÈç¹ûÒì³£ÓÐÒ»¸öֵΪTrueµÄsilent_variable_failureÊôÐÔ£¬Õâ¸ö±äÁ¿»áäÖȾ³É¿Õstring£º
Java´úÂë ¸´ÖÆ´úÂë
  1. >>> t = Template("My name is {{ person.first_name }}.")   
  2. >>> class PersonClas3:   
  3. ...     def first_name(self):   
  4. ...         raise AssertionError, "foo"  
  5. >>> p = PersonClass3()   
  6. >>> t.render(Context({"person": p}))   
  7. Traceback (most recent call last):   
  8. ...   
  9. AssertionError: foo   
  10. >>> class SilentAssetionError(AssertionError):   
  11. ...     silent_variable_failure = True   
  12. >>> class PersonClass4:   
  13. ...     def first_name(self):   
  14. ...         raise SilentAssertionError   
  15. >>> p = PersonClass4()   
  16. >>> t.render(Context({"person": p}))   
  17. "My name is ."  

2£¬·½·¨µ÷Óýö½öÔÚËüûÓвÎÊýʱÆð×÷Ó㬷ñÔòϵͳ½«¼ÌÐø²éÕÒÏÂÒ»¸öÀàÐÍ(ÁбíË÷Òý²éѯ)
3£¬ÏÔȻһЩ·½·¨Óи±×÷Óã¬ÈÃϵͳ·ÃÎÊËüÃÇÊǺÜÓÞ´ÀµÄ£¬¶øÇҺܿÉÄÜ»áÔì³É°²È«ÐÔÎÊ
Ìâ¡£
ÀýÈçÄãÓÐÒ»¸öBankAccount¶ÔÏ󣬸öÔÏóÓÐÒ»¸ödelete()·½·¨£¬Ä£°åϵͳ²»Ó¦¸ÃÔÊÐí×öÏÂÃæµÄÊÂÇé
I will now delete this valuable data. {{ account.delete }}
ΪÁË·ÀÖ¹ÕâÖÖ×´¿ö£¬¿ÉÒÔÔÚ·½·¨ÀïÉèÖÃÒ»¸ö·½·¨ÊôÐÔalters_data
Èç¹ûÉèÖÃÁËalters_data=TrueµÄ»°Ä£°åϵͳ¾Í²»»áÖ´ÐÐÕâ¸ö·½·¨£º
Java´úÂë ¸´ÖÆ´úÂë
  1. def delete(self):   
  2.     # Delete the account   
  3. delete.alters_data = True  


²»ºÏ·¨µÄ±äÁ¿ÔõÑù´¦Àí
ĬÈÏÇé¿öÏÂÈç¹û±äÁ¿²»´æÔÚ£¬Ä£°åϵͳ»á°ÑËüäÖȾ³É¿Õstring£¬ÀýÈ磺
Java´úÂë ¸´ÖÆ´úÂë
  1. >>> from django.template import Template, Context   
  2. >>> t = Template('Your name is {{ name }}.')   
  3. >>> t.render(Context())   
  4. 'Your name is .'  
  5. >>> t.render(Context({'var''hello'}))   
  6. 'Your name is .'  
  7. >>> t.render(Context({'NAME''hello'}))   
  8. 'Your name is .'  
  9. >>> t.render(Context({'Name''hello'}))   
  10. 'Your name is .'  

ϵͳ»á¾²ÇÄÇĵØÏÔʾ´íÎóµÄÒ³Ãæ£¬¶ø²»ÊDzúÉúÒ»¸öÒì³££¬ÒòΪÕâÖÖÇé¿öͨ³£ÊÇÈËΪµÄ´íÎó¡£
ÔÚÏÖʵÇéÐÎÏ£¬Ò»¸öwebÕ¾µãÒòΪһ¸öÄ£°å´úÂëÓï·¨µÄ´íÎó¶ø±äµÃ²»¿ÉÓÃÊDz»¿É½ÓÊܵġ£
ÎÒÃÇ¿ÉÒÔͨ¹ýÉèÖÃDjangoÅäÖøü¸ÄDjangoµÄȱʡÐÐΪ£¬µÚ10ÕÂÀ©Õ¹Ä£°åÒýÇæ»áÎÒÃÇ»áÌÖÂÛÕâ¸ö

ÍæÍæContext¶ÔÏó
´ó¶àÊýÇé¿öÏÂÄã³õʼ»¯Context¶ÔÏó»á´«µÝÒ»¸ö×ֵ䏸Context()
Ò»µ©Äã³õʼ»¯ÁËContext£¬Äã¿ÉÒÔʹÓñê×¼Python×ÖµäÓï·¨Ôö¼õContext¶ÔÏóµÄitems£º
Java´úÂë ¸´ÖÆ´úÂë
  1. >>> from django.template import Context   
  2. >>> c = Context({"foo""bar"})   
  3. >>> c['foo']   
  4. 'bar'  
  5. >>> del c['foo']   
  6. >>> c['foo']   
  7. ''  
  8. >>> c['newvariable'] = 'hello'  
  9. >>> c['newvariable']   
  10. 'hello'  

Context¶ÔÏóÊÇÒ»¸östack£¬Äã¿ÉÒÔpush()ºÍpop()
Èç¹ûÄãpop()µÄÌ«¶àµÄ»°Ëü½«´¥·¢django.template.ContextPopException£º
Java´úÂë ¸´ÖÆ´úÂë
  1. >>> c = Context()   
  2. >>> c['foo'] = 'first level'  
  3. >>> c.push()   
  4. >>> c['foo'] = 'second level'  
  5. >>> c['foo']   
  6. 'second level'  
  7. >>> c.pop()   
  8. >>> c['foo']   
  9. 'first level'  
  10. >>> c['foo'] = 'overwritten'  
  11. >>> c['foo']   
  12. 'overwritten'  
  13. >>> c.pop()   
  14. Traceback (most recent call last):   
  15. ...   
  16. django.template.ContextPopException  

µÚ10ÕÂÄã»á¿´µ½Ê¹ÓÃContext×÷Ϊstack×Ô¶¨ÒåÄ£°å±êÇ©

Ä£°å±êÇ©ºÍ¹ýÂËÆ÷»ù´¡
ÎÒÃÇÒѾ­Ìᵽģ°åϵͳʹÓÃÄÚ½¨µÄ±êÇ©ºÍ¹ýÂËÆ÷
ÕâÀïÎÒÃÇ¿´¿´³£¼ûµÄ£¬¸½Â¼6°üº¬ÁËÍêÕûµÄÄÚ½¨±êÇ©ºÍ¹ýÂËÆ÷£¬Äã×Ô¼ºÊìϤÄǸöÁбíÀ´Á˽â¿ÉÒÔ×öʲôÊǸöºÃÖ÷Òâ

if/else
{% if %}±êÇ©¼ÆËãÒ»¸ö±äÁ¿Öµ£¬Èç¹ûÊÇ“true”£¬¼´Ëü´æÔÚ¡¢²»Îª¿Õ²¢ÇÒ²»ÊÇfalseµÄbooleanÖµ
ϵͳÔò»áÏÔʾ{% if %}ºÍ{% endif %}¼äµÄËùÓÐÄÚÈÝ£º
Java´úÂë ¸´ÖÆ´úÂë
  1. {% if today_is_weekend %}   
  2.     <p>Welcome to the weekend!</p>   
  3. {% else %}   
  4.     <p>Get back to work.</p>   
  5. {% endif %}  

{% if %}±êÇ©½ÓÊÜand£¬or»òÕßnotÀ´²âÊÔ¶à¸ö±äÁ¿Öµ»òÕß·ñ¶¨Ò»¸ö¸ø¶¨µÄ±äÁ¿£¬ÀýÈ磺
Java´úÂë ¸´ÖÆ´úÂë
  1. {% if athlete_list and coach_list %}   
  2.     Both athletes and coaches are available.   
  3. {% endif %}   
  4. {% if not athlete_list %}   
  5.     There are no athletes.   
  6. {% endif %}   
  7. {% if athlete_list or coach_list %}   
  8.     There are some athletes or some coaches.   
  9. {% endif %}   
  10. {% if not athlete_list or coach_list %}   
  11.     There are no athletes or there are some coaches.   
  12. {% endif %}   
  13. {% if athlete_list and not coach_list %}   
  14.     There are some athletes and absolutely no coaches.   
  15. {% endif %}  

{% if %}±êÇ©²»ÔÊÐíͬһ±êÇ©Àïͬʱ³öÏÖandºÍor£¬·ñÔòÂß¼­ÈÝÒײúÉúÆçÒ壬ÀýÈçÏÂÃæµÄ±êÇ©ÊDz»ºÏ·¨µÄ£º
Java´úÂë ¸´ÖÆ´úÂë
  1. {% if athlete_list and coach_list or cheerleader_list %}  

Èç¹ûÄãÏë½áºÏandºÍorÀ´×ö¸ß¼¶Âß¼­£¬Ö»ÐèʹÓÃǶÌ×µÄ{% if %}±êÇ©¼´¿É£º
Java´úÂë ¸´ÖÆ´úÂë
  1. {% if athlete_list %}   
  2.     {% if coach_list or cheerleader_list %}   
  3.         We have athletes, and either coaches or cheerleaders!   
  4.     {% endif %}   
  5. {% endif %}  

¶à´ÎʹÓÃͬһ¸öÂß¼­·ûºÅÊǺϷ¨µÄ£º
Java´úÂë ¸´ÖÆ´úÂë
  1. {% if athlete_list or coach_list or parent_list or teacher_list %}  

ûÓÐ{% elif %}±êÇ©£¬Ê¹ÓÃǶÌ×µÄ{% if %}±êÇ©¿ÉÒÔ×öµ½Í¬ÑùµÄÊÂÇ飺
Java´úÂë ¸´ÖÆ´úÂë
  1. {% if athlete_list %}   
  2.     <p>Here are the athletes: {{ athlete_list }}.</p>   
  3. {% else %}   
  4.     <p>No athletes are available.</p>   
  5.     {% if coach_list %}   
  6.         <p>Here are the coaches: {{ coach_list }}.</p>   
  7.     {% endif %}   
  8. {% endif %}  

È·ÈÏʹÓÃ{% endif %}À´¹Ø±Õ{% if %}±êÇ©£¬·ñÔòDjango´¥·¢TemplateSyntaxError

for
{% for %}±êÇ©ÔÊÐíÄ㰴˳Ðò±éÀúÒ»¸öÐòÁÐÖеĸ÷¸öÔªËØ
PythonµÄforÓï¾äÓ﷨Ϊfor X in Y£¬XÊÇÓÃÀ´±éÀúYµÄ±äÁ¿
ÿ´ÎÑ­»·Ä£°åϵͳ¶¼»áäÖȾ{% for %}ºÍ{% endfor %}Ö®¼äµÄËùÓÐÄÚÈÝ
ÀýÈ磬ÏÔʾ¸ø¶¨athlete_list±äÁ¿À´ÏÔʾathleteÁÐ±í£º
Java´úÂë ¸´ÖÆ´úÂë
  1. <ul>   
  2. {% for athlete in athlete_list %}   
  3.     <li>{{ athlete.name }}</li>   
  4. {% endfor %}   
  5. </ul>  

ÔÚ±êÇ©ÀïÌí¼ÓreversedÀ´·´ÐòÑ­»·ÁÐ±í£º
Java´úÂë ¸´ÖÆ´úÂë
  1. {% for athlete in athlete_list reversed %}   
  2. ...   
  3. {% endfor %}   
  4. {% for %}±êÇ©¿ÉÒÔǶÌ×£º   
  5. {% for country in countries %}   
  6.     <h1>{{ country.name }}</h1>   
  7.     <ul>   
  8.     {% for city in country.city_list %}   
  9.         <li>{{ city }}</li>   
  10.     {% endfor %}   
  11.     </ul>   
  12. {% endfor %}  

ϵͳ²»Ö§³ÖÖжÏÑ­»·£¬Èç¹ûÄãÏëÕâÑù£¬Äã¿ÉÒԸıäÄãÏë±éÀúµÄ±äÁ¿À´Ê¹µÃ±äÁ¿Ö»°üº¬ÄãÏë±éÀúµÄÖµ
ÀàËÆµÄ£¬ÏµÍ³Ò²²»Ö§³ÖcontinueÓï¾ä£¬±¾ÕºóÃæµÄ“ÕÜѧºÍÏÞÖÆ”»á½âÊÍÉè¼ÆµÄÔ­Ôò
{% for %}±êÇ©ÄÚÖÃÁËÒ»¸öforloopÄ£°å±äÁ¿£¬Õâ¸ö±äÁ¿º¬ÓÐһЩÊôÐÔ¿ÉÒÔÌṩ¸øÄãһЩ¹ØÓÚÑ­»·µÄÐÅÏ¢
1£¬forloop.counter±íʾѭ»·µÄ´ÎÊý£¬Ëü´Ó1¿ªÊ¼¼ÆÊý£¬µÚÒ»´ÎÑ­»·ÉèΪ1£¬ÀýÈ磺
Java´úÂë ¸´ÖÆ´úÂë
  1. {% for item in todo_list %}   
  2.     <p>{{ forloop.counter }}: {{ item }}</p>   
  3. {% endfor %}  

2£¬forloop.counter0ÀàËÆÓÚforloop.counter£¬µ«ËüÊÇ´Ó0¿ªÊ¼¼ÆÊý£¬µÚÒ»´ÎÑ­»·ÉèΪ0
3£¬forloop.revcounter±íʾѭ»·ÖÐʣϵÄitemsÊýÁ¿£¬µÚÒ»´ÎÑ­»·Ê±ÉèΪitems×ÜÊý£¬×îºóÒ»´ÎÉèΪ1
4£¬forloop.revcounter0ÀàËÆÓÚforloop.revcounter£¬µ«ËüÊDZíʾµÄÊýÁ¿ÉÙÒ»¸ö£¬¼´×îºóÒ»´ÎÑ­»·Ê±ÉèΪ0
5£¬forloop.firstµ±µÚÒ»´ÎÑ­»·Ê±ÖµÎªTrue£¬ÔÚÌØ±ðÇé¿öϺÜÓÐÓÃ
°²»ÕлªµçÄÔѧУרҵְҵ¹æ»®Ê¦ÎªÄãÌṩ¸ü¶à°ïÖú¡¾ÔÚÏß×Éѯ¡¿
Ö÷Õ¾Ö©Öë³ØÄ£°å£º 国产精品日本欧美一区二区三区 | 亚洲精品少妇一区二区 | 天堂精品一区 | 国产福利在线小视频 | 免费真人毛片在线播放 | 97涩涩网 | 九九热免费精品视频 | 川上优av一区二区线观看 | 91成人短视频在线观看 | 一二三区视频在线 | 干片网在线观看 | 久久久久久国产精品久久 | 久热国产精品视频 | 国产亚洲99天堂一区 | 美女禁网站 | 亚洲欧美综合精品久久成人网无毒不卡 | 天堂日日操 | 91免费观看网站 | 91av手机在线观看 | 国产中文一区 | 国产视频一区二区三区四区五区 | 一区二区三区免费视频观看 | 99久久国产综合精品麻豆 | 制服丝袜日日夜夜 | 91传媒视频在线观看 | 91在线免费看 | 91视频免费在线观看 | 国产色拍 | 热久久久久 | 综合久久中文字幕 | 国产电影久久久久久 | 天堂vs亚洲 | 91久色蝌蚪 | 国产欧美一区二区三区久久手机版 | 九色网站在线观看 | 91亚洲国产亚洲国产亚洲 | 91亚洲国产 | 一区二区在线不卡视频 | 99热精品在线观看 | 我要色综合网 | 国产成人精品一区二区免费看京 |