この記事は Django Advent Calendar 2017 の6日目の記事です。 tell-kさんの記事 を読んでいて、「そういえばDjangoには組込みのドキュメントジェネレータがあるんで紹介しておこう」と思ったので書くことにしました。 タイトルの通り、 django.contrib.admindocs の紹介です。 Djangoフレームワークの黎明期からこの機能は存在してます。ドキュメントもあります。 The Django admin documentation generator | Django documentation | Django 使い方 settings.pyのINSTALLED_APPSに django.contrib.admindocs を追加する。(django.contrib.adminも必要です) ROOT_URLCONFで指定されているurls.py
追記: この記事の内容はかなり古くなっています。翔泳社さんからDjangoの書籍を出版するこちらを読んで頂くのがおすすめです。 実践Django Pythonによる本格Webアプリケーション開発 作者:芝田 将翔泳社Amazon Django Advent Calendar 2016 - Qiita 18日目の記事です。 Django REST Frameworkは、DjangoでRESTfulなAPIを提供するときに非常に人気のあるフレームワークです。 既に使ってるよという方も多くいらっしゃるのではないでしょうか。 日経電子版さんも業務でも活用しているようです。 この記事では、REST Framework自体の使い方とかはあまり話しません。 REST Framnworkの作者である @_tomcriestie さんが策定・開発しているCore APIの概要と使い方について、これまでの経緯
はじめに generic foreignkey 自体のprefetchはできる。しかし、その更に先のrelationをprefetchすることができない。これをどうにかしようと言う苦肉の策を考えてみたという話。 言い訳 djangoのgeneric foreignkey関連のコードを読んでみたところ綺麗にできる方法は無さそうだった。実行時のprefetchの条件を上手く受け渡す方法が存在しなさそうだったので。仕方がないので thread localなcontext objectを作りそこでprefetchの条件を指定できるようにする。 概要 以下の様な形のモデルになっているとする。 Feed -- generic foreign key --> cotent = {A,B,C} A -- 1:N --> xs = {X} B -- 1:N --> ys = {Y} C X Y Feedとい
djangoでヘテロなリストのprefetch djangoでヘテロなリストのprefetch。できないと思ったら普通に出来たのでわりとびっくりしたので記事にしてみた。 ヘテロなリスト? ここでのヘテロなリストと言うのは以下のようなリストを指している。 xs = [A(), B(), A(), A(), B(), C()] つまるところ1つの型のオブジェクトのリストではなく複数の型が混在したリストのようなものを指している。このようなリストは複数のことなるアイテムを要素として持つタイムラインのようなページを作ろうとした時に必要になる。例えば、このようなものをgeneric foreignkeyを使って以下の様に実装するということがあるかもしれない。 from django.contrib.contenttypes.fields import GenericForeignKey from dj
get_urlsで正しいっぽいurlpattern渡してるのに、なんでそんなパターン見つからないって怒られるんじゃーとなって先輩とデバッグしてたら、1.9から追加されたという以下のコードに遭遇した。 urlpatterns = [ url(r'^$', wrap(self.changelist_view), name='%s_%s_changelist' % info), : # For backwards compatibility (was the change url before 1.9) url(r'^(.+)/$', wrap(RedirectView.as_view( pattern_name='%s:%s_%s_change' % ((self.admin_site.name,) + info) ))), ] django.contrib.admin.options | D
[django][python] 久しぶりにdjangoのORMのことについて書いてみる はじめに djangoのORMは正直好きじゃない。そもそも挙動が正確には把握しづらくてなんだか覚えにくいと感じる所がある。また、ドキュメントに書かれたとおりの書き方では不足することもあったりして、結局生のSQLを書かなければいけなかったりする場合もある。とは言え、ORMでできることはORMの機能を使ってやったりすると良い。 queryのチューニングについて select_related() と prefetch_related() について queryのチューニングについて書いてみようと思う。queryのチューニングと聞いて真っ先に思い浮かぶのは「N+1クエリーの除去」かもしれない。関連オブジェクトの取得が対象となるオブジェクトの個数だけ実行されるようなもののこと。これには、 select_relat
普段 Django でモデル宣言をするときは、下のコードのように django.db.models.Model を継承したクラスをつくってクラス変数にフィールドを宣言する。メタ情報として class Meta を書くことも多いと思う。 from django.db import models class MyUser(models.Model): name = models.CharField("名前", max_length=128) age = models.IntegerField("年齢", default=0) class Meta: db_table = "my_user" verbose_name = verbose_name_plural = "マイユーザー" サンプル通りに記述すればアプリを作れる。ただ「特定のクラスを継承してクラス変数にフィールドを宣言するだけで、マイグ
Djangoフレームワークでは、APIが変更、廃止される場合には、次のバージョンですぐに変わってしまうのではなく、警告を上げた上で2つ先のバージョンで削除されることになっています。 Deprecation policy Pythonの組み込み例外であるDeprecationWarningを継承したクラスがDjangoでは定義されており、必要に応じてこれを確認できます。 確認方法 Pythonの実行オプションとして -Wd のように指定するとDeprecationWarningを表示できるので、これを「manage.py test」や「manage.py check」の実行時に指定すればよいです。 試したバージョンはPython3.5, Django1.9.5です。 $ python -Wd manage.py test実行結果: $ python -Wd manage.py test Cr
※追記:django-model-utils というパッケージの PassThroughManager が同じようなことしてくれるみたいです Model Managers — django-model-utils 2.3a1 documentation 例えば下記のような、書籍名・本棚登録済みかのフラグ・出版日を持ったモデルクラスがあるとする from django.db import models class Book(models.Model): name = models.CharField(max_length=255) registered_flg = models.BooleanField(default=False) published_date = models.DateTimeField() ここで、「本棚登録済みの本のみを抽出」とか「出版済みの本のみを抽出」とかしたい場
Author: itavor Posted: January 23, 2008 Language: Python Version: .96 Score: 10 (after 10 ratings) Download Raw The Django docs show us how to give models a custom manager. Unfortunately, filter methods defined this way cannot be chained to each other or to standard queryset filters. Try it: class NewsManager(models.Manager): def live(self): return self.filter(state='published') def interesting(se
Django1.8で増えた機能でSecurityMiddlewareというものがあります。 何ができるのか把握しておきたかったので調べていました。 django.middleware.security.SecurityMiddleware コードはこのあたり。 django/security.py at stable/1.8.x · django/django · GitHub 以下の内容は、Django1.8のドキュメントとコードを元に記述しています。 概要 SecurityMiddlewareは、Djangoアプリケーションへのリクエスト、レスポンスに対していくつかのセキュリティ強化を施します。 具体的には以下のような機能があります。 HTTP Strict Transport Security (HSTS) ヘッダの付与 X-Content-Type-Options: nosniff
今回はDjangoのフォームについて書きました。 だらだらしてたらアップするのがかなり遅れました(ごめんね) 難しいですよねフォーム。正直すこし苦手です。この記事はそんな人向けの備忘録(?)です。 infoこの記事は2015年に書かれたもので、Djangoのバージョンは1.8を使っています。基盤は変わっていないと思いますが、ご利用の際はドキュメントをしっかりご確認ください。フロントエンドのフレームワークを使う機会が増え、Django Form の利用はこれから減っていくと個人的に考えています。私自身もう年単位で Django Form に触れておらず、今後動向を追うこともないのでおそらく今後この記事を更新することはないと思います。FormFormはバリデータであり、HTMLのFORM関連要素を表現します。 >>> from django import forms >>> class Reg
Django tips: template loading and rendering November 1, 2007 Django I’ve been reminded today by Maura that November is National Blog Posting Month, when — in theory — bloggers the world over try to keep up a pace of one entry every day. I don’t know how well this is going to go, but I’d like to give it a try. And, inspired by Drew McLellan’s excellent 24 ways “advent calendars” of web-design tips,
Multi-Model Database — FoundationDB 毎秒1400万回のライト(write)を行うNoSQLデータベースFoundationDB、ACIDの条件も満たす - TechCrunch FoundationDBのNoSQLデータベースがACIDトランザクションをサポート FoundationDB というのが TL に流れてきて、読んでたら面白そうだったので触ってみた。ただ触るだけだと面白くないので Django 経由で触ってみることに。 結論 Django 1.6 系でちゃんと python manage.py syncdb してデータが入る。これはすばらしい。 データの取り出しも問題ない。何か意識する必要もないので良い感じ。 性能はまだ 環境 Mac OS X 10.9.5 Python 2.7.9 Python 関連はこの辺入れた
Today I was adding tox and Travis-CI support to a Django project, and I ran into a problem: our project doesn’t have a setup.py. Of course I could have added one, but since by convention we don’t package our Django projects (Django applications are a different story) – instead we use virtualenv and pip requirements files – I wanted to see if I could make tox work without changing our project. Turn
MySQL-Python (MySQLdb) のメンテナンスが停滞したことで fork して後方互換性を保ったままメンテナンスをしている mysqlclient ですが、 Django の recommend になりました。 Databases | Django documentation | Django もともと推奨になっていた MySQLdb が Python 3 をサポートしないままメンテナンスが停滞していることが問題になり、対立候補が MySQL Connector/Python と mysqlclient でした。 Oracle 公式の安心感(僕個人が片手間にやってるよりは圧倒的に開発リソースを避けるはず)も捨てがたいのですが、クエリ結果のカラム数×行数(=MySQLパケット数)が多い時に Pure Python の MySQL Connector/Python と libmy
Ryan Brown Ryan works on Openstack Heat at Red Hat and has written Python for web, orchestration, and backend applications large and small. TL;DR: Pyramid, Django, and Flask are all excellent frameworks, and choosing just one for a project is hard. We'll see working apps with identical functionality in all three frameworks to make comparing the three easier. Skip to Frameworks in Action[1] 1 Intro
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く