[Django] DateTimeFieldからUnix時間を取り出す
やりたいこと
DjangoのデータベースのDateTimeFieldからUNIX時間を取り出したい。
UNIX時間とは?
UNIX時間、またはUNIX時刻とはコンピューターシステム上での時刻表現の一種。協定世界時 (UTC) での1970年1月1日午前0時0分0秒から形式的な経過秒数。
DjangoのデータベースのDateTimeFieldからUNIX時間を取り出したい。
UNIX時間、またはUNIX時刻とはコンピューターシステム上での時刻表現の一種。協定世界時 (UTC) での1970年1月1日午前0時0分0秒から形式的な経過秒数。
Django v2.0に対応
各メソッドの詳細は公式サイトを参照のこと https://docs.djangoproject.com/ja/2.0/ref/models/querysets/
| 大分類 | 小分類 | メソッド |
|---|---|---|
| 全件取得 | all() | |
| 検索条件を指定 | 肯定 | filter(**kwargs) |
| NOT条件 | exclude(**kwargs) | |
| IN条件の中身をリストで指定する | in_bulk(id_list=None, field_name=‘pk’) | |
| 並び順を指定 | 昇順 | order_by(*fields) |
| 降順 | reverse() | |
| クエリセットから インスタンスを取得 | 検索に一致したもの | get(**kwargs) |
| 指定した日付順で 最新のもの | latest(*fields) | |
| 指定した日付順で 最古のもの | earliest(*fields) | |
| クエリセットの先頭 | first() | |
| クエリセットの最後 | last() | |
| レコードを新規登録する | 新規登録 | create(**kwargs) |
| 条件に一致するものを取得 無い場合は新規登録して取得 | get_or_create(defaults=None, **kwargs) | |
| 条件に一致するものを更新 無い場合は新規登録 | update_or_create(defaults=None, **kwargs) | |
| 一括登録する | bulk_create(objs, batch_size=None) | |
| 一括更新する | update(**kwargs) | |
| 一括削除する | delete() | |
| 特定のフィールドを集計 | テーブル内の集計 | aggregate(*args, **kwargs) |
| 参照先テーブルの集計 | annotate(*args, **kwargs) | |
| 該当のレコード件数 | count() | |
| 抽出したレコードから 重複の無い日付配列を作る | dates(field, kind, order=‘ASC’) | |
| 抽出したレコードから 重複の無い時刻配列を作る | datetimes(field_name, kind, order=‘ASC’, tzinfo=None) | |
| クエリセットの存在をチェック | exists() | |
| インスタンスの一部だけを取得 | 結果を辞書のリストで取得 | values(*fields, **expressions) |
| 結果をタプルのリストで取得 | values_list(*fields, flat=False, named=False) | |
| 特定のフィールドの 重複無しリストを作る | distinct(*fields) | |
| SQLを直接実行する | SQLを直に設定する(一部) | extra(select=None, where=None, params=None, tables=None, order_by=None, select_params=None) |
| SQLを直に設定する(全部) | raw(raw_query, params=None, translations=None) | |
| クエリセット同士の集合演算 | 和集合 | union(*other_qs, all=False) |
| 積集合 | intersection(*other_qs) | |
| 差集合 | difference(*other_qs) | |
| パフォーマンスチューニング キャッシング | SQLのJOIN句を使って 関係先を同時に取得しキャッシュ 1-1,N-1で有効 | select_related(*fields) |
| 関係先を先行取得してキャッシュ 1-N、N-Nで有効 | prefetch_related(*lookups) | |
| パフォーマンスチューニング 重いカラムを取得しない | 指定カラムだけ取得しない | defer(*fields) |
| 指定カラムだけ取得する | only(*fields) | |
| パフォーマンスチューニング 巨大なテーブルをループで扱う | iterator(chunk_size=2000) | |
| データベースのレコードロック | select_for_update(nowait=False, skip_locked=False, of=()) | |
| デフォルト以外のデータベース | using(alias) | |
| 空のクエリセットを作る | none() |
filter, exclude, getでは検索条件を指定する。
指定方法は用意された記述法を使う。詳しくは公式サイトの以下のページを参照
なぜ自動保存機能を付けようと思い至ったかと申し上げますと、
先日、30分くらいかけて編集していたメモ(当サイト記事)を更新する時、ネットワークのエラーで送信に失敗**「書いていた内容を全喪失する」**という悲しい事故が発生いたしました。
Djangoでのjsonの送受信についてメモ、送信はいいけど受信は割と忘れそう。
from django.http.response import JsonResponse
def jsonSend(request):
json_data = {"data":{"daat1":"DATA1","data2":"DATA2"}}
return JsonResponse(json_data)
jsonを送信するには辞書型のオブジェクトをJsonResponseに渡してreruenするだけでOK
Djangoサーバーで配信するHTML等の要素をGzipで圧縮して利用帯域幅を削減したい。
実はDjangoには標準でGzip圧縮できる機能があるので今回はそれを有効にしてみる。
このサイトにもコードを張り付けることがあるわけですが、そのままではどうにも見づらい。
というわけで、markdownをシンタックスハイライト付きでHTMLにできたらいいなぁ
画面の左右に余白をもたせたい場合は「container」
画面いっぱいにコンテンツを表示するなら「container-fluid」
感覚としてはcontainer-fluidの方が自由が利くので、どっちにするか迷ったらcontainer-fluid一択で良いんじゃなかろうか。
このサイトのメモの内容はマークダウンで書き込んでいるのですが、
何件か書き込んだあたりで「普通のフォームだと書きづらい」、「編集しながらどんな見た目になるのか確認したい」と思いました。
そこで、今回は、JavaScriptで簡単にサイトにマークダウンエディタが組み込める「SimpleMDE」をご紹介します。
超簡単
pip install markdown
でインストールして
import markdown as md
html = md.markdown("#markdown")
これだけ
一応拡張機能でシンタックスハイライト対応もできるみたいだけど今回は割愛。
気が向いたら追記するかも
別メモ書きました markdownをシンタックスハイライト付きでHTMLにしてみる
このサイト自体を公開する時に行った作業の一連の流れです。
・python3及びDjangoについて基本的な知識がある事
・Djangoで既にアプリケーションを作成済みである事
・作成したアプリケーションがgitのリポジトリに登録済みなこと