utamaro’s blog

誰かの役に立つ情報を発信するブログ

Django

指定したキーをdictから再帰的に検索して削除する方法

Djangoを使っているなかで、apiのテストをする際に特定のkeyを取り除きたいということがありました。 例えば、レスポンスにcreated_atが含まれている場合、レコードが作成された日が入ると、assertDictEqualでは期待値と一致しないためエラーとなってしまい…

DjangoでPageNotFound時にjsonを返す方法

Djangoでapiを作っている際に、自分で定義していないpathをリクエストしたところ404ページが表示されました。 apiを使うため、これをjsonで返すように変更したいと考えて、実現する方法を調べてみました。 参考にしたページ一覧 Error handling https://docs…

61.DjangoBasicAppsのCommentsを読んでみる

urls.pyには目新しいものがなかったのでスルーします。 urlを使ってbooksと同じように作成されていたのでスルーします。 1つだけわかったことは、viewの引数にはviews.py内のメソッドを入れるということ。 views.pyを確認する コメント時の日付をバリデーシ…

60.DjangoBasicAppsという数年前のプロジェクトのBooksを読んでみる

DjangoBasicAppsのリポジトリは↓です。 https://github.com/nathanborror/django-basic-apps その中にあるBooksを読んで、Djangoの書き方を確認したいと思いました。 https://github.com/nathanborror/django-basic-apps/tree/master/basic/books views.pyが…

59.DjangoのでTwythonを使ったOAuthのサンプルを読んでみた。

参考にしたプロジェクトは↓です。 https://github.com/ryanmcgrath/twython-django Twythonを使ってTwitterのAPIを利用することができるようです。 An example Django application to showcase how to use OAuth with Twitter in Django using Twython. と書…

Djangoのサンプルを覗いて使い方を勉強してみたときのメモ

django-realworld-example-appを参考にする このプロジェクトは一番最初に参考にしたものです。 Djangoのバージョンが1.10.0と古い(記事を書いている段階での最新は2.1.5が最新)です。 https://github.com/gothinkster/django-realworld-example-app このプ…

Djangoの管理画面でBootStrap臭がひどいので消すことにした。

管理画面のBootStrap臭がひどいので消すことにしました。 アドミン機能はとても便利です。 DB内のデータをモデルを使ってCRUD操作できるので、編集が簡単です。 でも、個人的にはDB内のデータを操作する際は、専用のクライアントツールを使いたい派です。 po…

Djangoのモデルに定義していないフィールドを追加する方法

こんな感じのModelを定義しているときに、追加でフィールドを入れたくなったときがありました。 class Sample(models.Model): uuid = models.UUIDField(unique=True) created_at = models.DateTimeField(auto_now_add=True) modified_at = models.DateTimeFi…

Djangoでページングを表示するための関数

Djangoでページング処理を作成する際に作った関数を紹介します。 コードの紹介になるので、紹介はコードにコメントにて行います。 前後のページを表示するための関数 # self.limit: データ表示数 def page_data(self, count, page): # count: データ数 # pag…

DjangoでCSRFを含んだリクエストをtagを使って実行する方法

CSRFトークンを含んだAPIの実行方法で、ドキュメントに載っているような方法ではなく、tagを使った方法を紹介します。 tagを使った方法というのは、{% cookie 'csrftoken' %}でhtml内にtokenを入れて、その値を使う方法です。 修正が必要な箇所は以下の3箇所…

DjangoでSerializerを使ったバリデーション方法について DjangoではRestApiを作成するための便利なライブラリとしてDjango REST frameworkというものがあります。 このライブラリを使うと、簡単にapiを作成することができます。 この記事ではDjango REST fra…

ハロウィンだしネタアプリを作ってみた話

タイトルの通り、ネタアプリを作ってみました。 作ったアプリケーションはこちらです。 http://www.everyday.work/ 「進捗どうですか?」というアプリケーションで、作成時間は1~2時間ぐらいです。 使用したフレームワークや環境を箇条書きにするとこんな感…

Djangoのテンプレート内でcloudinaryのディレクトリを指定して画像を表示する

Djangoを使って、cloudinaryで保存している画像を表示する場合、{% cloudinary %}を使用します。 その際に、ファイル名を指定することができるのですが、ファイル名のみだとディレクトリ分けしていた場合表示されません。 そこでなんとかディレクトリを指定…

Djangoでtwitter認証をしたあとにツイートする方法

前提として、social-auth-app-djangoを使ってtwitterでの認証が実装できている状態とします。 class TwitterPost(TemplateView): post_api = "https://api.twitter.com/1.1/statuses/update.json" def post(self, request, *args, **kwargs): social_user = …

Djangoのtemplate内でクエリパラメータを設定する方法

Djangoのtemplate内で以下のように書いているときに、リンク先をクエリパラメータで渡すときの方法です。 <li><a href="{% url 'home' %}">next</a></li> 渡したいパラメータはpとします。値は整数です。 まず、一番簡単な方法を紹介します。 <li><a href="{% url 'home' %}?p=1">next</a></li> この方法はシンプルですが、パラメータが増えたとき…

Djangoでcssファイルから画像ファイルを読み込む方法

Djangoでcssファイルから画像ファイルをurlで指定する方法について紹介します。 やることは簡単です。 Djangoの設定ファイルで以下のような設定をしていると思います。 STATIC_URL = '/static/' STATIC_ROOT = 'staticfiles' この設定をしている場合、static…

DjangoでGoogleアカウントの認証機能を入れる方法

Djangoのログイン機能でGoogleのアカウントを使った方法を入れます。 必要なライブラリをインストールします。 pip install django python3-openid social-auth-app-django (ついでにherokuで必要なライブラリも入れたい場合は↓をどうぞ) pip install djan…

DjangoのORMを使わないでクエリを実行する方法

ORM(object relational mapper)を使うべきか、使わざるべきかの議論を時々目にします。 Author.objects.all()←こういうやつです。 今回は、DjangoでORMを使わずにクエリを書いてDBからデータを取得する方法を紹介します。 クエリの生成にはjinjasqlというp…

Djangoのtemplate内でurlの逆引きをする方法

逆引きをやることで、何がいいのか。 やらなくてもできますが、べた書きする必要があります。 例えば、anchorタグのhref属性に/api/hoge/delete/{{id}}と書いたりすることになります。 複数の場所で↑のように書いてた場合は修正が大変になります。 あと、tem…

Django+herokuで無料サービスを作る

Djangoとherokuを使って費用0(初期投資を含めません)でサービスを公開するところまで解説します。 サーバ代0円 期間はだいたい3日 この記事は https://sticky-cards.herokuapp.com/ を作ったときに得たノウハウをまとめています。 (ログイン不要で使える…

Djangoをherokuにデプロイする

herokuの用意 アカウント作成 アプリケーションを作成 開発環境を用意する macを対象にしています。 ※ brewをインストールしていることが前提です。 herokuをインストールする brew install heroku 以上です。 herokuのコマンド ログインする heroku login h…

Djangoのプロジェクト構造について

Djangoのプロジェクト構造について紹介します。 一般的な(ドキュメントに書いてあるような)構造とは少し異なります。 まずは全体の構造を紹介します。 ./ ├── Procfile <== heroku用 ├── README.md ├── app │ ├── __init__.py │ └── card │ ├── __init__.p…