pythonãšdjangoã«é¢ããããã€ãã®å°ããªã¡ã¢/ãã³ããèç©ãããŠããŸããããããã¯å¥ã
ã®ãããã¯ã«åŒãå¯ããããŠããªããããäžåºŠã«ãã¹ãŠãå
¬éããŸãã 
      
        
        
        
      
    
      
        
        
        
      
     ã«ããã®äžïŒ 
      
        
        
        
      
    -  ãã¥ãŒã³ãŒããæ£ç¢ºã«2ååçŽåããæ¹æ³ 
 -  ã°ã©ããæãç°¡åãªæ¹æ³ 
 -  ã€ã¢ã³ã»ãããã³ã°ããã¯ãŒã«ïŒã 
 -   5åã§Djangoã§VKontakteã®ã¢ããªã±ãŒã·ã§ã³ 
 -   pymorphyã¯è¯ãã§ããïŒ 
 -   pypiã§ã®ããã±ãŒãžã®ã¬ã€ã¢ãŠãã«é¢ããããã€ãã®ããã 
 -  ãã³ã¬ãŒã¿ãšwith-contextãããŒãžã£ã®å
±éç¹ã¯äœã§ããïŒ 
 -  ãžã£ã³ãŽãµã€ãã§æ¯æããåãå
¥ãã 
 -  æå®ãããäœæã®Yandex.Mapã衚瀺ããŸã 
 
      
        
        
        
      
    
      
        
        
        
      
    
      
        
        
        
      
      DjangoïŒãã¥ãŒã³ãŒãã®ç°¡çŽ å 
      
        
        
        
      
      Djangoã®ããã¥ã¡ã³ããšãã¥ãŒããªã¢ã«ã¯éåžžãæ¬¡ã®ãããªãã¥ãŒãäœæããŸãã 
      
        
        
        
      
    
      
        
        
        
      
    def contact(request): if request.method == 'POST': form = ContactForm(request.POST) if form.is_valid(): 
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
     
 
      
        
        
        
      
    
      
        
        
        
      
     ããã¯ããããæ£ããã§ã-人ãäœãèµ·ãã£ãŠããããããããçè§£ããããã«èª¬æããã ãããå®éã«ã¯ããã®ã³ãŒãã¯æ£ç¢ºã«2åçãæžãããŠããŸãã 
      
        
        
        
      
    
      
        
        
        
      
     def contact(request): form = ContactForm(request.POST or None) if form.is_valid(): 
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
     
      
        
        
        
      
    
      
        
        
        
      
     ãããïŒ 
      
        
        
        
      
    -  éãã€ã³ããã©ãŒã ã®å Žåãis_validã¯åžžã«Falseãè¿ããŸãã ãã®åŸã 
ContactForm(request.POST or None)
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    ã³ãŒãContactForm(request.POST or None)
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    ãã©ã®ããã«æ©èœããããããã«ããããªãå Žåã¯ãæŒç¿ãšããŠçè§£ããŠããã€ã³ãããŸããã ããã¯ã·ã³ãã«ã§äŸ¿å©ãªã€ãã£ãªã ã§ãã  -  ãªãã€ã¬ã¯ãã«ã¯åžžã«
django.shortcuts.redirect
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    ã䜿çšããŸãã  URLåãéã«ãããget_absolute_urlãåŒã³åºãããŸãã¯åã«URLããªãã€ã¬ã¯ããã  -   
render_to_response
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    代ããã«django.views.generic.simple.direct_to_template
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    ã䜿çšããŸãã ãããã¯ã»ãšãã©åãããšãdirect_to_template
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    ãŸããã direct_to_template
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    ã¯ã»ãšãã©ã®å Žådirect_to_template
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    å¿
èŠã§ããContextã®ä»£ããã«direct_to_template
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    䜿çšããŸãã  direct_to_template
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    代ããã«ãdjango- direct_to_template
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    ã®render_toãã³ã¬ãŒã¿ãŒã䜿çšã§ããŸãããããã¯ãã§ã«å¥œã¿ã®åé¡ã§ãã  
      
        
        
        
      
    
      
        
        
        
      
      DjangoïŒã°ã©ãã£ãã¯ã¹ãæã 
      
        
        
        
      
      管çããã«ã«é¢ããèšäºã§
ã圌ã¯ã°ã©ãã£ãã¯ã¹ã«ã€ããŠè©±ãããš
ãçŽæããŸããããããã§ãåœŒã®æã¯å±ãããããŸããããŸããã§ããã ã¯ãããããŠç¹å¥ãªããšã¯äœããããŸããããã¹ãŠãåçŽãããŠãæããã§ã-ã°ã©ãã¯ã°ãŒã°ã«ãã£ãŒããéããŠæãããŸãã ãã®å Žåãã©ã€ãã©ãªãªãã§å®è¡ã§ããŸãïŒ 
ããã§å³ããã°ã©ããäœæã
ãŸã ïŒããã¯Googleã®åå
¬åŒããŒã«ã§ããapigoogleãã£ãŒãã®ãã«ããããªã³ã¯ããããŸãïŒã次ã«ãçµæã®è¡ããã³ãã¬ãŒãã«è²Œãä»ãããã¹ãå€ã®ä»£ããã«å€æ°ã眮ãæããŸãã 
      
        
        
        
      
    
      
        
        
        
      
      Googleãã£ãŒãã®éåžžã«èãã©ãããŒããããŸãïŒ 
django-chart-tools æ¬è³ªã¯åãã§ããã°ã©ããèŠèŠçã«åéããŠå€æ°ã眮ãæããã«ã¯ãdjango-chart-toolsã䜿çšããã ãã§ããã®ãããªã°ã©ããç¶æããæ¹ã䟿å©ã§ãã 
      
        
        
        
      
    
      
        
        
        
      
     ããŒã¿ã®ãµã³ããªã³ã°ã¯ãã¿ã¹ã¯ã«å¿ããŠdjango ORMãä»ããŠããŸãã¯äŸ¿å®äž/é床ã®ããã«
django-qsstats-magicãä»ããŠ
ç°¡åã«å®è¡ã§ããŸãã 
      
        
        
        
      
    
      
        
        
        
      
     ãã®çµæïŒdjango-chart-toolsãšdjango-qsstats-magicã䜿çšïŒããŠãŒã¶ãŒã®æ¥æ¬¡ã°ã©ãã¯æ¬¡ã®ããã«è¡šç€ºã§ããŸãã 
      
        
        
        
      
    
      
        
        
        
      
     
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
     
      
        
        
        
      
    
      
        
        
        
      
     次ã«ã倿°ã®å€ãšãã£ãã·ã§ã³ããã³ãã¬ãŒãã«æž¡ããããã«ã°ã©ããæ¬¡ã®ããã«è¡šç€ºããŸãã 
      
        
        
        
      
    
      
        
        
        
      
     {% load chart_tags %} {% bar_chart values captions «580x100» %}
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
     
      
        
        
        
      
    
      
        
        
        
      
      Googleãã£ãŒãã®ç»åAPIã§ã¯ããããæ°ã«å¶éã¯ãã
ãŸãã ã1æ¥ããã20äžä»¶ãè¶
ããããããè² è·ã忣ããå Žåã«ã®ã¿é£çµ¡ããããã«èŠæ±ããŸãã ãã®ããããã®ãããªã°ã©ãã¯ç®¡çããã«ã ãã§ãªã䜿çšã§ããŸãã 
      
        
        
        
      
    
      
        
        
        
      
      DjangoïŒãã¹ã 
      
        
        
        
      
      django-webtestã䜿çšããŠãã¹ããäœæããŸãã ç§ã¯ãã§ã«ãã®ã¢ããªã±ãŒã·ã§ã³ã«ã€ããŠ
æžããŸãããããããã1ã€ã®éåžžã«éèŠãªå€æŽãçºçããŸãããdjango-webtestãïŒæšæºã®dzhangovskyãã¹ãã¯ã©ã€ã¢ã³ãã®ããã«ïŒãã³ãã¬ãŒãã®ã³ã³ããã¹ãã«ã¢ã¯ã»ã¹ã§ããããã«ãªããŸããã  GregorMÃŒlleggerã«æè¬ããŸãã ããã§ããã®ã¹ã¿ã€ã«ã§æžãããšãã§ããŸãïŒ 
      
        
        
        
      
    
      
        
        
        
      
      
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
     
      
        
        
        
      
    
      
        
        
        
      
     æšæºã®assertTemplateUsedãæ©èœããŸãã 
      
        
        
        
      
    
      
        
        
        
      
      django-webtestã¯ããã€ã«ã®çµ±åãããåªããŠããŸãã ãã³ãã¬ãŒãã®ã³ã³ããã¹ãã«ã¢ã¯ã»ã¹ããããUnicodeãå®å
šã«ãµããŒããããããããšã¯ã§ããããã€ã«ã¯éçºãããŸããã 
      
        
        
        
      
    
      
        
        
        
      
      django-webtestã¯ãæšæºã®ãã¹ãã¯ã©ã€ã¢ã³ããããåªããŠããŸãã ã·ã³ãã«ãªAPIãæäŸããŸãïŒæšæºã®ãã¹ãã¯ã©ã€ã¢ã³ããä»ããŠããã©ã«ãå€ã§ãã©ãŒã ãéä¿¡ããŠã¿ãŠãã ããïŒã ãŸããæšæºã®ãã¹ãã¯ã©ã€ã¢ã³ãã§csrfããŒã¯ã³ïŒãŸãã¯éåžžã«
é»ãã«ãŒãïŒãååšããªãããšããã¹ãããããšã¯ã§ããŸããããdjango-webtestã§ã¯ããã¯ç°¡åã«ïŒããã«ã¯èªåçã«ïŒè¡ãããŸãã  django-webtestã䜿çšïŒ 
      
        
        
        
      
    
      
        
        
        
      
     ããã§ã¯ãæ©èœãåãããããã¢ãããã¬ãŒããäœæããŸããdjango-webtestã«ã¯ã©ãã§ãç·è²ã®ãã§ãã¯ããŒã¯ãããããã€ã«ãšæšæºãã¹ãã¯ã©ã€ã¢ã³ãã«ã¯ãã¡ãã¡ã«èµ€ããã®ããããŸãã  Ian Bickingã§ãããdjango-webtestã¯ãã¯ãŒã«ãã ãšèããŠããŸãã 
      
        
        
        
      
    
      
        
        
        
      
      DjangoïŒVkontakteçšã®ã¢ããªã±ãŒã·ã§ã³ã®äœæ 
      
        
        
        
      
     åçŽãªã ãã§ãªããéåžžã«åçŽã§ãã éåžžã®ãµã€ããšã®éãã¯ããŠãŒã¶ãŒã®ç»é²æ¹æ³ãšãã°ã€ã³æ¹æ³ã®ã¿ã§ãã  django-registrationã®ä»£ããã«ãdjango- 
vkontakte-iframeãèšå®ããã³æ§æããŸãã ããã§ããã¹ãŠã®èšªåè
ãç»é²ããã³æ¿èªãããdjangoãŠãŒã¶ãŒã«ãªããŸããããã以å€ã®å Žåã¯ãéåžžã®ãµã€ããéçºã§ããŸãã  iframeãµã€ãºãããŒãžãµã€ãºã«åãããããã«jsã®äžè©±ãããªãéãã 
      
        
        
        
      
    
      
        
        
        
      
      Python / DjangoïŒãã·ã¢èªã§ã®äœæ¥ 
      
        
        
        
      
     誰ãç¥ããªãã 
pymorphyã¯ãã·ã¢èªãæ±ãããã®pythonã©ã€ãã©ãªã§ãã 圢æ
玠解æãšå€§ç ²ããã¹ãºã¡ãæã€ããšãã§ããŸãïŒããšãã°ãããŒã¹ããåèªãåŸæãããïŒãŸãã¯åçŽãªãã¬ãŒãºïŒdjangoãã³ãã¬ãŒãã«çŽæ¥å
¥åããããæ°ã«å¿ããŠæ£ãã圢åŒã«é
眮ããããã-åè§ã®ãã¹ãŠã®ããªã¢ã³ãã®æç€ºçãªãªã¹ããªã 
      
        
        
        
      
    
      
        
        
        
      
      pymorphyã¯ãã®ãŒã¯éèªã®
èšäºããæé·ããŸãã ç§ã¯èªãããã³ãŒãã¯æåã¯è¯ããªãã£ãããªããªã ããã¯pythonãšnlpïŒèªç¶èšèªåŠçïŒã®äž¡æ¹ã§ã®åããŠã®çµéšã§ããã ãããã圢æ
玠解æåšã¯æžãããŠããã1å¹ŽéæŸæ£ãããŸããã 
      
        
        
        
      
    
      
        
        
        
      
     ä»å¹Žã®åãã«ã圌ã¯pymorphyã®äœæ¥ãåéããããã«ãããã¹ãŠã®ãã®ãæžãçŽããŸããã ãããŠæ¥ã«ã¯ãDialogue 2010ã«ã³ãã¡ã¬ã³ã¹ã§åœ¢æ
玠解æã®ãç«¶åããè¡ãããŸããã éåžžã«çå£ãª
人ãããã«åå ããçµæã¯ããã®èšèªåŠè
ã«ãã£ãŠãã§ãã¯ãããŸããã  Morphologyãã©ãã¯ã®
pymorphyãæåãå°œãããŸããïŒããããããã€ãã³ã§æžãããè€åèªã䜿çšããŠäœæ¥ãå±éããããã§ãïŒã ãŸããpymorphyã¯ããã©ãã¯ã®è§£æããããŒãã£æè©ãã§éä¿¡ããå¯äžã®åå è
ã§ããã ããã¯æ¬åœã«äœã®æå³ããããŸãããã玠æŽãããã§ãïŒ 
      
        
        
        
      
    
      
        
        
        
      
      PythonïŒpypiã§ããã±ãŒãžãã¬ã€ã¢ãŠãããããã®ããã€ãã®ããªã㯠
      
        
        
        
      
      1. long_descriptionã®setup.pyã§ã¯ãReSTããŒã¯ã¢ããã䜿çšã§ããŸãã  README.rstãã¡ã€ã«ãsetup.pyã®æšªã«é
眮ããŠãããæå®ããã ãã§äŸ¿å©ã§ã 
 long_description = open('README.rst').read()
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
     
 ãã®åŸãpypiã®ãããžã§ã¯ãããŒãžã¯ããã«ãã«ãã衚瀺ããŸã-ã·ã³ãã«ã§äŸ¿å©ã§ã90ïŒ
ã®åå¥ã®ããã¥ã¡ã³ãã«é¢ãããã©ãã«ã®å¿
èŠæ§ãæé€ããŸãïŒå¥ã®ãã®ãããªçºèšããããŸã-ããã§ãããã±ãŒãžã«ããã²ãŒã·ã§ã³ãªã©ã®ããã¥ã¡ã³ããå¿
èŠãšæãããå ŽåïŒæ€èšãã䟡å€ããããŸã-ããã±ãŒãžãå€ãããŸããïŒïŒã 
      
        
        
        
      
    
      
        
        
        
      
      2. setup.pyã«ã¯ããŸãç¥ãããŠããªãããã¯ããããŸãã ããŒã¯ã¢ãããæå³ãããšããã«èŠããªãå ŽåããŸãã¯ã¿ã€ããã¹ãåé¡åãä¿®æ£ãããŠããå Žåããããã®ãšã©ãŒãä¿®æ£ããããã«æ°ãããªãªãŒã¹ãäœæããå¿
èŠã¯ãããŸãããåã«
./setup.py register
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    ãå®è¡ãããšããŒã¿ã
./setup.py register
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
    ãŸãã 
      
        
        
        
      
    
      
        
        
        
      
      PythonïŒãã³ã¬ãŒã¿ãš 
      
        
        
        
      
     ãã³ã¬ãŒã¿ãšpythonã®withæŒç®åã¯ãåãããšã®ããã«ãã䜿çšãããŸããç¹å®ã®ã³ãŒãã®åãŸãã¯åŸã«è¿œå ã®ã¢ã¯ã·ã§ã³ãå®è¡ããããã§ãã ãããŠããã¯ããã³ã¬ãŒã¿ãšããŠãããã³withçšã®ã³ã³ããã¹ããããŒãžã£ãšããŠäœ¿çšã§ãããã®ïŒããšãã°ã 
gist.github.com/573536 ïŒãäœæã§ããããšãæå³ããŸãã 
      
        
        
        
      
    
      
        
        
        
      
      DjangoïŒãµã€ãã§æ¯æããåãå
¥ãã 
      
        
        
        
      
     ã©ã¡ãããšããã°ãdjango-robokassaãšdjango-assist-ruãä»ããŠãæ°åä»¶ã®è³Œå
¥ãçç£ã§è¡ããã100äžã«ãŒãã«ãè¶
ããŸããã 
      
        
        
        
      
    
      
        
        
        
      
     誰ãäœã䜿çšãããããªã¹ãã«è¿œå ããŸãã 
      
        
        
        
      
    
      
        
        
        
      
      Python / DjangoïŒãµã€ãã«Yandex.Mapã衚瀺ãã 
      
        
        
        
      
     ãžãªã³ãŒãã£ã³ã°ãšãã£ãã·ã¥ãæ··ä¹±ãããªãããã«ã 
yandex-mapsã¢ããªã±ãŒã·ã§ã³ã䜿çšã§ããŸãã 
      
        
        
        
      
    
      
        
        
        
      
     ãããŒãç§ãã¡ã¯ãã¹ãŠãä»®å®ããŸãã