utamaro’s blog

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

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/ コードと解説の距離が離れると読みづらいと思…

データが存在しない場合にデータを追加するSQL

テーブル内にデータが存在しない場合に限って、データを追加する方法を紹介します。 クエリについては日本語で解説をするよにも、まずはコードを見たほうが早いと思うので、先に載せます。 こちらが、データを追加するクエリです。 INSERT INTO tag ( name, …

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…

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

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

はみ出す文字列を三点リーダーにする方法

領域をはみ出したときに三点リーダー(…)にする方法を紹介します。 既出かと思いますが、詳しい内容とかあまり見つからない(こうやればできるというのは見つかる)ので、私なりに調べた内容を載せます。 領域をはみ出したときに三点リーダー(…)にする場合は…

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

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

bulmaのpanelのヘッダーにボタンを付ける

bulmaというcssフレームワークでpanelというものがあります。 このpanelではpanel-headingというのがあるのですが、このヘッダーに編集ボタンは用意されていません。 この記事ではbulmaのpanelのヘッダーに編集ボタンを付ける方法を紹介します。 panelについ…

画像の上に文字列を表示する方法

htmlとcssを使って、画像にマウスを置くと文字が出てくる部品の作り方を解説します。 今回javascriptは使用しません。また、scssも使いません。もちろんwebpackとかビルドは必要ないです。 最終的に↓のようなものを作れます。 htmlのコード htmlのコードはこ…

stackoverflowのapiをpythonで使ってみた

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

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

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

Djangoでログイン後に特定の処理を挟む方法

表題の通りですが、Djangoでログイン後に一回だけ処理を入れたいときの方法を考えて見ました。 一つしか思いつかなかったのですが、紹介したいと思います。 やることをは簡単で、ログイン後のリダイレクトに一つだけviewを挟む形です。 まずは、settings.py…

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

SpringBootでLocalDateTimeを含んだデータをCSV形式で出力する方法

SpringBootを使って、データ内にLocalDateTime型のフィールドがある場合のCSVファイル作成方法です。 CSVファイルを作成して、そのファイルをダウンロードするのではなく、CSV文字列を返すイメージです。 ブラウザでGETリクエストをするとダウンロードできる…

SpringBootでクライアントからの日付をLocalDateTimeで受け取る方法

クライアントから2018-10-19T10:10という文字列を受け取ったときに、LocalDateTimeで受け取る方法を紹介します。 LocalDateTimeで受け取れると何かと便利です。Stringで受け取ると、それをDateに直したりするのが面倒なので、結構使える方法なのではないでし…

SpringBootでPathVariable付きのリダイレクトをする方法

spring bootを使って、@PathVariableがついているurlにリダイレクトする際の方法について紹介します。 設定は、/redirect/fromにリクエストがあった際に、/redirect/to/{id}へリダイレクトするときの書き方です。 それぞれのurlの仕様について説明します。 /…

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

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

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

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

エクセルを使わないでマークダウンでapiのドキュメントを作成する

apiのドキュメントを作成する際にエクセルを使って見栄えの良い(?)ドキュメントを作成することはよくあります。 ですが、以下のことが起きたりします。 キレイな表を作成することに力を入れてしまう 更新されない xxx_v1とかxxx_v2というファイルが増える こ…

プログラミングを勉強するおすすめの方法

プログラミングを勉強する際の、おすすめの方法を紹介します。 私の場合、新しい言語を勉強する場合はじゃんけんゲームを作成します。 じゃんけんゲームを作成する理由は↓です。 理由 じゃんけんは簡単なアルゴリズムである アルゴリズムを考えて悩むことが…

何かを説明する際に気をつけていること

私は、誰かに何かを説明することがとても苦手です。 それも、人と会話することが少なく、噛み噛みなためなのですが... そんな私が説明時(1対1、もしくは1対多のとき)に気をつけていることを紹介します。 気をつけていること 気をつけていることは3つありま…

シンプルなカレンダーフォームを作る方法

日付選択をする際にでてくるあのカレンダーを作る方法を紹介します。 documentではdomに属性をつけてオプションを指定しているのがほとんどですが、属性をつけるとごちゃごちゃするので、jsに書きます。 準備 以下のライブラリが必要です。 リンクを付けまし…

Django+herokuでS3を使わない画像の保存方法

cloudinaryというアドオンを使って、画像を保存します。 画像の保存というとamazon s3が思い浮かぶと思いますが、あれほんの少しお金かかりますよね? スタートということで、完全無料でやるためにcloudinaryを使ってみます。 cloudinaryのアドオンは↓です。…

できるだけ早く、無料でwebサービスを開発するまで

無料でwebサービスを作り、公開するまでの流れを紹介したいと思います。 今回BookStackerhttp://www.book-stacker.comというサービスを作ったので、その際の開発の流れを紹介します。 以下の流れで開発を行いました。 タスクを洗い出す(3h) 仕様を書き出す(3…

javascriptのreduceを使って配列を更新する方法

reduceを使用すると、ある配列を使って単一の値を計算したい場合に使えます。 いくつかreduceを使った例を紹介します。 配列内のデータを加算する var datas = [1,2,3,4,5] var result = datas.reduce(function(num, item) { // numの初期値は0 return num +…