utamaro’s blog

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

Django

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…