utamaro’s blog

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

python

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…

pythonでjwtを使う際に作ったutilについて

作成したjwtのutilを紹介します。 作成したutilですが、まだまだ修正途中のものです。使用する場合は注意してください。 jwtについての詳細についてはこちらを参照してください。 https://jwt.io/introduction/ コードと解説の距離が離れると読みづらいと思…

pythonを使ってcsvのファイルを生成する方法

pythonを使ったcsvのファイルを生成する方法を紹介します。 この記事では、csvの読み込みは扱いません。csvファイルを作成する方法を紹介しています。 csvを扱うための便利なライブラリをインストールします。 pip install pandas csvを読み書きするためにpa…

mecabを使って解析する方法

mecabのインストール方法等はいろいろなサイトに書かれているので、pythonのプログラミング部分を紹介します。 意外と実装について書かれてる記事が少なくてびっくりしました。なので、help()を使って使い方を試しました。 以下の環境で作業しています。 mac…

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

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

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

lxmlを使ったxmlのパース方法

lxmlというライブラリを使ってxmlをパースしたときのメモを記事にしています。 lxmlはBeautifulSoupというスクレイピングのライブラリでも使われたりしなかったりします。 xmlファイルを取得する pythonでファイルを読み込む方法はいろいろありますが、再帰…

stackoverflowのapiをpythonで使ってみた

stackoverflowのoauthを試してみたので、そのときにやったことを紹介します。 基本的なステップについてはすべてドキュメントにかかれていたので、試す際に書いたコードを載せます。 ドキュメントはこちらです。 https://api.stackexchange.com/docs/authent…

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> この方法はシンプルですが、パラメータが増えたとき…

pythonを使ってディレクトリのツリー構造をjsonで表示してみた

何に使えるのかわかりませんが、ディレクトリのツリー構造をjsonで表現するプログラムを紹介します。 サンプルとして用意したティレクトリ構造が以下のものです。 このディレクトリのtreeをjsonにしたいと思います。 dir/ ├── dir2 │ ├── file1 │ └── file2 …

pythonで楽天apiを実行する方法

楽天の会員登録をする これは登録画面に沿って登録をするだけです。 登録画面のurlを載せます。 【楽天】ログイン 楽天のアプリIDを発行する アプリURLはhttp://localhost.comで登録しました。 やり方を調べたところ、自分のgithubのurlを入れるというのも見…

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

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

pythonのファイルをherokuで定期的に実行する方法

この記事ではpythonのファイルに書かれたprint()を定期的に実行する方法を紹介します。 ↓のページを参考にしています。 https://devcenter.heroku.com/articles/clock-processes-python herokuで適当なアプリケーションを作成していて、remoteへpushできるま…

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

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

pythonでBeautifulSoupを使ったスクレイピング

pythonでBeautifulSoupを使ったスクレイピング python3.6.4を使用しています。 必要なライブラリをインストールします。 pip install beautifulsoup4 requests lxml beautifulsoup4はスクレイピングのライブラリ。 requestsはgetとかpostのリクエストに使う…

mysqlclientでdict型のデータを取得する方法

通常、selectをしたときはtupple型で取得されます。 少し使いづらいので、dict型で取得できるようにします。 connectを取得して、cursorにDictCursorを設定するだけです。 from MySQLdb.cursors import DictCursor self.connect = _mysql.connect( host=DATA…

watchdogを使ってファイルを監視する

カレントディレクトリの*.logに変更があった場合にMyHandler内のメソッドが実行される。 最初は.logファイルで修正したらon_modifiedが呼ばれると考えていたが、実際はon_deleted、on_createdの順番で呼ばれていた。 class MyHandler(PatternMatchingEventHa…

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…