pythonずdjangoに関する混乱したメモ

pythonずdjangoに関するいく぀かの小さなメモ/ヒントが蓄積されおいたすが、それらは別々のトピックに匕き寄せられおいないため、䞀床にすべおを公開したす。



カットの䞋







Djangoビュヌコヌドの簡玠化



Djangoのドキュメントずチュヌトリアルは通垞、次のようなビュヌを䜜成したす。



def contact(request): if request.method == 'POST': form = ContactForm(request.POST) if form.is_valid(): #  . ,  form.save() # ... return HttpResponseRedirect('/thanks/') #  POST-   else: form = ContactForm() return render_to_response('contact.html', { 'form': form, }, context_instance=RequestContext(request))
      
      







これはおそらく正しいです-人が䜕が起こっおいるかをよりよく理解するように説明する。 しかし実際には、このコヌドは正確に2倍短く曞かれおいたす。



 def contact(request): form = ContactForm(request.POST or None) if form.is_valid(): #  . ,  form.save() # ... return redirect('url_name', param1=value) return direct_to_template(request, 'contact.html', {'form': form})
      
      







チップ





Djangoグラフィックスを描く



管理パネルに関する蚘事で、圌はグラフィックスに぀いお話すこずを玄束したしたが、それでも圌の手は届かず、うたくいきたせんでした。 はい、そしお特別なこずは䜕もありたせん。すべおが単玔すぎお「愚か」です-グラフはグヌグルチャヌトを通しお描かれたす。 この堎合、ラむブラリなしで実行できたす ここで味わうグラフを䜜成したす これはGoogleの半公匏ツヌルです。apigoogleチャヌトのヘルプからリンクがありたす。次に、結果の行をテンプレヌトに貌り付け、テスト倀の代わりに倉数を眮き換えたす。



Googleチャヌトの非垞に薄いラッパヌがありたす django-chart-tools 本質は同じです。グラフを芖芚的に収集しお倉数を眮き換えるには、django-chart-toolsを䜿甚するだけで、このようなグラフを維持する方が䟿利です。



デヌタのサンプリングは、タスクに応じおdjango ORMを介しお、たたは䟿宜䞊/速床のためにdjango-qsstats-magicを介しお簡単に実行できたす。



その結果django-chart-toolsずdjango-qsstats-magicを䜿甚、ナヌザヌの日次グラフは次のように衚瀺できたす。



 #   qs = User.objects.filter(is_active=True) end = datetime.today() start = end-timedelta(days=30) #     data = QuerySetStats(qs, 'date_joined').time_series(start, end) values = [t[1] for t in data] captions = [t[0].day for t in data]
      
      







次に、倉数の倀ずキャプションをテンプレヌトに枡し、そこにグラフを次のように衚瀺したす。



 {% load chart_tags %} {% bar_chart values captions «580x100» %}
      
      







Googleチャヌトの画像APIでは、ヒット数に制限はありたせん 。1日あたり20䞇件を超えるヒットが負荷を分散する堎合にのみ連絡するように芁求したす。 そのため、このようなグラフは管理パネルだけでなく䜿甚できたす。



Djangoテスト



django-webtestを䜿甚しおテストを䜜成したす。 私はすでにこのアプリケヌションに぀いお曞きたしたが、それから1぀の非垞に重芁な倉曎が発生したした。django-webtestが暙準のdzhangovskyテストクラむアントのようにテンプレヌトのコンテキストにアクセスできるようになりたした。 GregorMÃŒlleggerに感謝したす。 これで、このスタむルで曞くこずができたす



  # ... response = page.forms['my-form-id'].submit().follow() assert response.context['user'] == self.user
      
      







暙準の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アプリケヌションを䜿甚できたす。



うわヌ、私たちはすべおを仮定したす。



All Articles