django

django-tastypieのSessionAuthentication

django-tastypieのSessionAuthenticationはDjangoのデフォルトのセッション機能を使ってログインしているかどうかをチェックします。 具体的にはcookieにsessionidが設定されていること(ログインしている)と、あとはcsrftokenが必要なようです。試してみまし…

django-tastypieのOAuthAuthenticationを試す

依存ライブラリをインストールします pip install python-provider pip install oauth2 Resourceクラスでauthentication = OAuthAuthentication()を記述します from tastypie.authentication import OAuthAuthentication from tastypie.resources import Mod…

django-tastypieでDigest認証をかける

djang-tastypieでDigest認証をかける方法を試してみました。 前に試したApiKey認証と同じくApiKeyのレコードが必要ですので、下記のエントリの通り準備します。 django-tastypieでApiKey認証をかける http://d.hatena.ne.jp/yuheiomori0718/20120921 さらにp…

django-tastypie 0.9.12-alphaではApiKeyAuthenticationの認証パラメータでヘッダで渡せる

先日django-tastypieのApiKeyAuthenticatinを試してみました。 認証パラメータ(username/api_key)はGETかPOSTで渡すしかないので、登録や更新などの場合は(POSTパラメータのjsonにつっこんでも見てくれないので)、クエリパラメータで渡してたんですが、POST…

django-tastypieでApiKey認証をかける

先日django-tastypieで作ったAPIにBasic認証をかける方法を試してみました。 今日は自動的に生成されるApiKeyを使うApiKey認証というのを試してみたいと思います。 Basic認証ではユーザーのパスワードが必要ですが、それが好ましくない場合はこっちを使うみ…

django-tastypieでAPIにベーシック認証をかける

django-tastypieを使えば、Djangoでモデル定義されたデータへアクセスするAPIを簡単に作成することができます。先日サンプルを作成してみましたが、認証がかかっていないため、APIは誰でも叩けてしまいます。これはよくないですねどこのだれだかわからない人…

django-tastypieを使ってDjangoアプリにAPIを追加する

django-tastypieを使えば、Djangoでモデル定義されたデータへアクセスするAPIを簡単に作成することができます。できるみたい。 どのくらい簡単か試してみました。 インストール pip install django-tastypie0.9.11が入りました。 サンプル とりあえずモデルm…

Djangoのsignals.pre_deleteとpost_delete

やりたいこと あるモデルのレコードが削除されたとき、なんからの処理を行いたい やりかた Djangoの場合はsignalという仕組みが用意されています 例えばこのようにモデルとsignalsの設定をします from django.db import models from django.db.models.signal…

Djangoでpostgresのdistinct onを実行する

postgresにはdistinct on という構文があるそうです。知らなかったです。 djangoのドキュメントで知りました。 postgres distinct on でググるとこちらのエントリが一番上にきます。 PostgreSQL の DISTINCT ON http://www.odin.hyork.net/write/write0228.h…

Djangoでpostgresを使うまでのメモ

環境はMacOSX 10.7.4 Djangoは普段から使ってるけど、いつもsqlite3かmysqlなので、postgresを使うまでの環境設定のメモ 1. Postgresをhomebrewでインストールなんかdependencyでいろいろ入った $ PYTHON=/usr/local/bin/python brew install postgresql ==>…

django-generate-scaffoldをさわってみたメモ

こちらのエントリを見てdjango-generate-saffoldが面白そうだったのでさわってみました 「Python の Web フレームワーク Django って凄い」ってアピールのに "django-generate-scaffold" を使って3分でブログを作るとよいかもな件 http://d.hatena.ne.jp/Cor…

django-celeryをさわってみたメモ2 - リトライ

django-celeryでリトライをさせるにはどうするのか知りたくて、ドキュメント読みながら動かしてみたのでメモ以下のようにtaskデコレータをつけた関数内で、関数名.retryを呼ぶことで処理が再実行されます。 from celery import task from celery.utils.log i…

django-celeryをさわってみたメモ

django-celeryのインストール ほんとはpycharmの設定ダイアログから入れたんだけど、pipでも同じでしょう pip install django-celery 設定 1. Django Projectを作るPycharmのMenu->New Projectで ApplicationNameも聞かれるので、startappも同時にできます 2…

Djangoでpjaxするdjango-pjaxをTemplateViewで試してみた

以前django-pjaxを触ってみたエントリを書いたんですが Djangoでpjaxするdjango-pjaxを試してみた http://d.hatena.ne.jp/yuheiomori0718/20120831/1346420984 そのとき、こんなviewを書いてました from django.template.response import TemplateResponse f…

Djangoのクエリで特定のカラムの値をリストで取得する

Djangoでクエリの実行結果として、特定のカラムのみ取得するにはvaluesが使えます例えばこんなモデルがあるとして class Book(models.Model): title = models.CharField(max_length=100) published = models.DateField() titleだけ取得する場合は以下のよう…

Djangoのクエリで特定のカラムの値をリストを取得する

Djangoでクエリの実行結果として、特定のカラムのみ取得するにはvaluesが使えます例えばこんなモデルがあるとして class Book(models.Model): title = models.CharField(max_length=100) published = models.DateField() titleだけ取得する場合は以下のよう…

連続してtwitter投稿できるサイトをDjangoで作ってみた

数日前、こんなツィートを見かけまして、そのとき思いついたサイトを作ってみました。 まとめてなう http://bulknow.herokuapp.com/ twitterアカウントでログインすると、左側にtweet投稿のフォームが複数あって、右側に入力をつなげたものと全文字数が表示…

Djangoでpjaxするdjango-pjaxを試してみた

djangoでpjaxをするのにdjango-pjaxというライブラリがあるので試してみました。 django-pjax https://github.com/jacobian/django-pjax jquery-pjax https://github.com/defunkt/jquery-pjax インストール pip install django-pjax jquery-pjaxはダウンロー…

Djangoでtwitterログインするのにdjango-social-authが便利

昔railsアプリでtwitterログインさせるのにomniauthというライブラリをつかってたことがありまして、Djangoではどんなライブラリがあるのかなーと思って探してみたところ、django-social-authというのがよさそうだったので試してみました。 omniauth https:/…

DjangoのFormのhelp_textを改行させる

実に小ネタですが、help_textに指定する文言が長くて改行させたい場合、brタグを含めりゃよさそうですが、デフォルトでエスケープされて、そのまま<br>と表示されてしまいます。 class ContactForm(forms.Form): subject = forms.CharField(max_length=100, help…

デシジョンテーブル作成サイト「Decision Table Creator」でペア構成テストを出力できるようにした

昨日作成した「Decision Table Creator」ですが、テストケースの作成方法が条件の全組み合わせしかできなかったので、ちょっと条件が多くなると、テストケースが爆発してしまうという問題がありました。 ですので、テストケースの作成方法として、「全組み合…

デシジョンテーブルを作成するサイト「Decision Table Creator」を作ってみた

先日DjangoのFormsetを使ったサンプルを作ってみましたが、もう少し実用的なものを作ってみようと思い、デジションテーブルをエクセルファイルでダウンロードできるサイトを作ってみました。 Decision Table Creator http://decisiontable.herokuapp.com/ デ…

DjangoのFormSetで各フォームをまたがったバリデーションを行う

どうやるのかなと思って調べたときのメモ 例えば複数のブックマークを一括で入力できる画面を想定して、こんなFormとFormSetがある場合 from django.forms.formsets import formset_factory from django import forms class BookmarkForm(forms.Form): title…

jQueryでDjangoのformsetの表示を制御するjquery.formset.jsを試してみた

複数の同じフォームの表示をしたい場合、Djangoではformsetが用意されてます。 https://docs.djangoproject.com/en/1.4/topics/forms/formsets/普通に使うと、複数のフォームが同時に表示されます。 「最初はフォームをひとつだけ表示し、必要に応じて増減さ…

DjangoでCookieに値を設定または取得する方法のメモ

設定はHttpResponseのset_cookieを使う import datetime from django.http import HttpResponse def index(request): # 何らかの処理 response = HttpResponse(render_to_string('index.html')) set_cookie(response, 'key', 'value', 365*24*60*60) return …

ロンドン五輪なのでInstagramAPIを使ってロンドンの写真を表示するサイトを作ってみた

ロンドン五輪が始まったので、便乗して何かロンドンに関係あるサイトを作って見ようと思いました。だけど、大したものが思いつかなかったので、Instagram APIを使って londonというタグがついている画像を表示するという、何番煎じかわからないようなサイト…

DjangoのモデルでDBカラムにmediumtextを指定する

MySQLの場合はmediumtextにしたい。他にsqlite3を使うことが考えられるが、その場合はtextでいい。こんな感じ? class MediumTextField(models.TextField): def db_type(self, connection): if connection.settings_dict['ENGINE'] == 'django.db.backends.m…

Djangoでemail送信をテストする

先日、gmailを使ってdjangoからemailを送信する設定なんかを調べました。 今日は関連して「view関数などでemail送信している場合、ユニットテストを実行するたびに送信されてしまうのか?」と思ったので調べてみました。 結論を先に書きますと、python manag…

DjangoでGmailを使ってメール送信

DjangoではGmailを利用して簡単にメールを送信することができます。以下の手順ですぐに試せます。1. djangoアプリ作成 > django-admin.py startproject django_gmail 2. settings.pyに設定を追加使用するgmailのアカウントとそのパスワードが必要ですsetting…

Djangoでファイルのアップロードをテストする

POSTで画像アップロードがあるフォームのテストを書く方法を調べる機会があったのでメモしておく from django.test import TestCase class UploadTest(TestCase): def test_upload(self): with open('test.jpg') as f: res = self.client.post('images/uploa…