タグ別アーカイブ: Django

Django の MySQL 向けモデルで大文字と小文字を区別できるようにする

はじめに

 Django でデータベースバックエンドに MySQL を利用しているとき、CharField や TextField では大文字と小文字を区別しません。例えば「Value A」と「Value a」を区別して取得する場合、

result = Item.objects.filter(value='Value A')
のように取得すると、「Value A」の他に「Value a」や「value a」、「VALUE A」などがあればこれらも取得してしまいます。これは Django が悪いわけではなく、MySQL の挙動が原因です。MySQL で大文字と小文字を区別するためには、VARCHAR や TEXT のカラム定義に BINARY を付ける必要があります。今回、この BINARY を Django で自動的に付けるようにする方法を紹介します。

続きを読む

Django のモデル更新手順

はじめに

 Django はフルスタックのWebアプリケーションフレームワークです。アプリケーションデータの永続化はデータベースサーバーなどを使います。フレームワークではこれをモデルで実装します。開発を進めていくと、途中でモデルの修正が必要になる事があります。Django では直接 SQL 文を使うことなく、テーブル定義を更新することができます。
 今回、Django 1.10 での手順を紹介します。

続きを読む

Nginx に uWSGI + Django アプリ を組み込む

はじめに

 Django アプリを uWSGI でサービスとして起動して、Nginx でアクセスできるようにする手順をまとめました。
 Nginx のインストールはこちらの投稿を、Python の venv 環境を構築できるようにする手順はこちらの投稿を参照してください。
 なお、Linux ユーザーはホストの設定を操作する、wheel グループに属するユーザー user1 と、Webアプリケーションを管理する、nginx グループに属するユーザー webmaster の 2 つのアカウントを切り替えながら作業を進めます。これらのユーザーは下記コマンドで登録済みであるものとします。
 ホスト管理者 (user1) の領分と、アプリケーション管理者 (webmaster) の領分について、私なりの切り替え方が参考になれば幸いです。

[root]# useradd user1 -G wheel
[root]# useradd webmaster -g nginx
続きを読む