code&wit

Pythonやら機械学習の技術メモ。

テンプレートエンジンを用いてTwitterに投稿するモジュールを作成してみた

Pythonオブジェクト指向学習のため、テンプレートエンジンJinja2を使ってTwitterにPostするモジュールを作ってみた。 やっていることは tweepy と Jinja2 の一部の機能を使用したラッパーである。
github.com

テンプレートエンジンを使った値整形出力は、定型文を使って値の一部だけ毎回変えたい場合に便利である。 例えば、テンプレートに以下を用意した場合、投稿毎に"{{}}“で囲われた箇所のみ値を変えれば良い。

Hello, Today we will hold an event {{ event_name }}.
Summary: {{ summary }}
url: {{ url }}
{{ hash_tag }}

140字よりも多い文字数の値が入力された場合に備え、全体で140字以内に投稿内容を短縮するフィルタリング機能付き。ただし、短縮しては意味をなさないURLやハッシュタグなどは、短縮対象外項目として別途設定できる。

詳細はREADME.mdにて。

Djangoアプリケーション開発(3) Djangoの新アプリケーションを追加する

前のエントリで立ち上げたDjango開発環境にて新アプリケーションを追加する。 d5ono.hatenablog.com
ヴァージョン情報:

Python 3.5.2
Django 1.11.2
PostgreSQL 9.5


目次

  1. アプリケーションスタート
  2. INSTALLED_APPに新アプリケーションを登録
  3. 新アプリケーションにモデルを追加

1. アプリケーションスタート

Python仮想環境に入り、manage.pyと同階層で以下を実行。

(venv) ubuntu@ubuntu-xenial:/vagrant/project_name$ ./manage.py startapp new_application_name

https://docs.djangoproject.com/en/1.11/ref/django-admin/#startapp

/vagrant
    +/venv
    +/project_name
        +/Vagrantfile
        +/project_name
            +/project_name
                +/celery.py
                +/settings.py
                +/urls.py
                +/wsgi.py
            +/manage.py
            +/new_application_name    <= 新アプリケーションのディレクトリとソースが追加される


2. INSTALLED_APPに新アプリケーションを登録

project_name/project_name/settings.py を編集。

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'new_application_name',    <= 新アプリケーション名を追記
]


3. 新アプリケーションにモデルを追加

project_name/project_name/new_application_name/models.py を新規作成。
マイグレーション実行。

(venv) ubuntu@ubuntu-xenial:/vagrant/project_name$ ./manage.py makemigrations
(venv) ubuntu@ubuntu-xenial:/vagrant/project_name$ ./manage.py migrate

Django管理側サイトにログインすると、新規追加したアプリケーションページにアクセスできるようになっている。
Django管理側サイト:http://192.168.33.10:8000/admin/login/

Djangoアプリケーション開発(2) DjangoインストールからDB設定、runserverまで

前のエントリで立ち上げたPython仮想環境にDjangoをインストールしてからrunserverするまで。
d5ono.hatenablog.com
ヴァージョン情報:

Python 3.5.2
Django 1.11.2
PostgreSQL 9.5


目次

  1. Djangoインストール
  2. プロジェクト立ち上げ
  3. システムへのアクセスを許可するホストを設定
  4. DB設定・マイグレーション
  5. Django管理ユーザ作成
  6. django開発サーバ起動
  7. ブラウザアクセス

1. Djangoインストール

Python仮想環境に入る。

(venv) ubuntu@ubuntu-xenial:/vagrant$ pip3 install django


2. プロジェクト立ち上げ

(venv) ubuntu@ubuntu-xenial:/vagrant$ django-admin startproject projrct_name


3. システムへのアクセスを許可するホストを設定

project_name/project_name/settings.py を編集

ALLOWED_HOSTS = ['*']


4. DB設定・マイグレーション

python仮想環境に入り、PostgreSQLのドライバをインストールする。

(venv) ubuntu@ubuntu-xenial:/vagrant$ pip3 install psycopg2

つぎに、postgresユーザのUNIXパスワードを設定する。 PostgreSQLをインストールした時点でPostgreSQL管理用のUNIXユーザpostgresが作成されるが、パスワードが未設定のためUNIXログインができない。 いったんpython仮想環境を出る。

ubuntu@ubuntu-xenial:/$ sudo passwd postgres
Enter new UNIX password: postgresの新しいUNIXパスワード
Retype new UNIX password: postgresの新しいUNIXパスワード
passwd: password updated successfully

作成。ログインしてみる。

ubuntu@ubuntu-xenial:/$ su postgres
Password: postgresのUNIXパスワード
postgres@ubuntu-xenial:/$ 

次に、PostgreSQLにログインするためのpostgresのパスワードを設定する。
こちらを参考にさせて頂いた。
qiita.com

ubuntu@ubuntu-xenial:~$ sudo su postgres -c "psql --username=postgres"
psql (9.5.8)
Type "help" for help.

postgres=# ALTER USER postgres with encrypted password 'postgresのDBパスワード';

Peer認証を外す。

ubuntu@ubuntu-xenial:~$ sudo vi /etc/postgresql/9.5/main/pg_hba.conf

以下に編集。

local  all  dbuser  peer
local  all  all     peer

local  all  dbuser  md5
local  all  all     md5

postgresql 再起動。

ubuntu@ubuntu-xenial:~$ sudo /etc/init.d/postgresql restart

これで、PostgreSQLにpostgresユーザでログインできるようになる。

ubuntu@ubuntu-xenial:~$ psql -U postgres
Password for user postgres: postgresのDBパスワード'
psql (9.5.8)
Type "help" for help.

postgres=# 

これから作るDjangoシステムのデータベースユーザ作成。

ubuntu@ubuntu-xenial:~$ su - postgres
Password:    <= UNIXのpostgresユーザパスワード
postgres@ubuntu-xenial:~$ createuser -P dbuser
Enter password for new role: dbpassword
Enter it again: dbpassword
Password:    <= postgresのDBパスワード'

DB作成。

postgres@ubuntu-xenial:~$ createdb dbname -O dbuser
Password:    <= postgresのDBパスワード'

DBログインする時。

postgres@ubuntu-xenial:~$ psql -U dbuser -W -d dbname
Password for user dbuser: dbpassword
psql (9.5.7)
Type "help" for help.
dbname=> 

DB接続設定。
project_name/project_name/settings.py を編集

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'dbname',
        'USER': 'dbuser',
        'PASSWORD': 'dbpassword',
        'HOST': 'localhost',
        'PORT': '5432',
    }
}

DBマイグレーション
実行パスを通した後で以下を実行。

(venv) ubuntu@ubuntu-xenial:/vagrant/project_name$ ./manage.py makemigrations
(venv) ubuntu@ubuntu-xenial:/vagrant/project_name$ ./manage.py migrate

https://docs.djangoproject.com/ja/1.11/topics/migrations

5. Django管理ユーザ作成

(venv) ubuntu@ubuntu-xenial:/vagrant/project_name$ ./manage.py createsuperuser


6. django開発サーバ起動

(venv) ubuntu@ubuntu-xenial:/vagrant/project_name$ ./manage.py runserver 0.0.0.0:8000


7. ブラウザアクセス

http://192.168.33.10:8000/
Django管理側サイト:http://192.168.33.10:8000/admin/login/