ローカルでも動くPython3+Djangoを使ったアップローダーなんかを作ってみる 2

Facebook にシェア
Pocket
LINEで送る
このエントリーを Google ブックマーク に追加

ローカルでも動くPython3+Djangoを使ったアップローダーなんかを作ってみる 1 の続き。

※8/20 よりDJangoで作成するプロジェクト名を uploader から sites_project に変更

まだ小生もおぼつかないところが多いため、冗長な点、不足な点が多いと思うので、コメント等いただけたら幸いです。

[amazonjs asin=”B00P8DQZY4″ locale=”JP” title=”Lightweight Django”]

setting.pyを編集

Djangoではプロジェクト内に共通して設定するものは sites/sites_project/sites_project/settings.py に設定されている。
現段階では触らなくてもよい項目も多いため、はじめに最小限に設定する項目を編集、追記していく。

[python title=”settings.pyの内容”]

・・・・・

# 日本語の場合は jp ではなく ja に。
LANGUAGE_CODE = ‘ja’

# タイムゾーンを設定。
TIME_ZONE = ‘Asia/Tokyo’

# slashなしのURLをslashありにリダイレクトする設定を追記。
APPEND_SLASH = True

・・・・・

STATIC_URL = ‘/static/’

# 静的ファイル(css、js、img等)をsites/staticディレクトリにおく設定を追記。
STATICFILES_DIRS = (
os.path.join(BASE_DIR, "static"),
)

[/python]

 

データベースをmigrate

まだデータベースを利用していないが、予めmigrateしておく。
ここらへんはデータベースを扱うようになってから分かる範囲で解説を入れる。

[shell] $ python manage.py migrate
[/shell]

 

https://localhost:8082/admin にアクセスした際にログインする管理者ユーザーを作成する。

 

管理者ユーザーの作成

[shell] $ python manage.py createsuperuser
Username (leave blank to use ‘username’):
Email address:
Password:
Password (again):
Superuser created successfully.
[/shell]

 

アプリケーションを作成

uploader というアプリケーションを作成する。
アプリケーションの作成は sites/sites_project/manage.pyを使う。

[shell] $ python manage.py startapp uploader
[/shell]

忘れがちだが、アプリケーションを作成したらアプリケーションがあることをsettings.pyを通じてDjangoに教える必要がある。sites/sites_project/sites_project/settings.pyのINSTALLEDD_APPSに追加しておく。

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'uploader',
)

 

views.pyの編集

作成したアプリケーションのディレクトリの中にviews.pyというファイルがある。(sites/sites_project/uploader/views.py)
これは、GETやPOSTなどのリクエストとテンプレートに渡したり、どのHTMLテンプレートファイルを使用するかを指定するなど、表示に関わるところをカバーする。

今回はとりあえずトップページだけ作成する想定で、次のように編集した。

[shell] sites/uploader/views.py

# -*- coding: utf-8 -*-
from django.shortcuts import render
from django.http import HttpResponse
from django.shortcuts import render_to_response
from django.template import RequestContext

def top_page(request):
”’トップページ”’

return render_to_response(‘uploader/top_page.html’, # 使用するテンプレートを指定
{}, # テンプレートにデータを渡すときに辞書式で指定。
context_instance=RequestContext(request)) # その他標準のコンテキスト

[/shell]

よくわからない場合は、現段階ではなんとなくコードを書くだけでいい。
簡単に解説すると、後のほうでurls.pyというところであるURLにアクセスが来た際に、views.pyの中に定義した関数を呼び出すようにする。
たとえば、https://localhost:8082/uploader/top にアクセスが来たらtop_page関数が呼び出される。
呼び出されたら、top_page.htmlテンプレートを開くんだなぁ、くらいにとらえておいてもらえれば十分。

 

URLディスパッチャー

今回は、https://localhost:8082/uploader というURLを作成してツールを公開したいとする。
DjangoにはURLディスパッチャーという、https://localhost:8082/配下に https://localhost:8082/admin や https://localhost:8082/uploader などのアプリケーションごとにURLを割り振ったり、
更にそのアプリケーションごとに、例えばhttps://localhost:8082/uploader/top や https://localhost:8082/uploader/uploadなどのURLを割り振るための機能がある。

sites/sites_project/sites_project/urls.pyは上の例では前者のアプリケーション単位でのURLを割り振る設定ファイルで、
後者の各アプリケーション事のurls.pyは、各アプリケーションごとに自分で作成する必要がある。

具体的には以下のように設定していく。

まずsites/sites_project/sites_prject/urls.py には、 uploader/ にアクセスが来た場合は uploader/urls.pyに記述されているようにディスパッチすると記述する。(追記の部分)

[shell title=”sites/sites_project/sites_prject/urls.pyの内容”] urlpatterns = [
url(r’^admin/’, include(admin.site.urls)),
url(r’^uploader/’, include(‘uploader.urls’, namespace=’uploader’)), # 追加

] [/shell]

今回は更にuploader/top のようにURLを作成したいため、
url()関数の2つ目の引数で、uploader/ へアクセスが来た場合はsites/sites_project/uploader/urls.pyを参照するように指定している。

sites/sites_project/uploader/urls.py

# -*- coding: utf-8 -*-
from django.conf.urls import patterns, url
from uploader import views

urlpatterns = patterns('',

    url(r'^/top$', views.top_page, name='top_page'),   
)