Web」カテゴリーアーカイブ

Python + Django してみた。 その3.テンプレート使ってみた。

ども、みむらんです。
第2回の続きってことで。

 

1.テンプレートとなる HTML ファイルを書く。

test_project ディレクトリ以下に templates/test_app ディレクトリを作成し、
templates/test_app ディレクトリ以下に home.html を以下の内容で作成します。

<html>
<head>
<title>{{title}}</title>
</head>
<body>
{% for i in data %}
{{i}}<br/>
{% endblock %}
</body>
</html>

{{変数}} というのを、「テンプレート変数」と呼び、
{{% タグ 引数 %}} ~ {{% end タグ %}} というのを、「タグ」と呼びます。

テンプレート変数の記述を用いて、変数の中身を表示させ、
タグの記述を用いて表示上の処理を記述する形となります。

Django テンプレート言語 — Django v1.0 documentation
ぱーっとこのページを見ていた感じでは、以下の要素がよく使われそうな気がします(ぉ

タグ名

利用用途

extends [template file] すでに定義されているテンプレートファイルを継承する。

Java での extend と同義と捉えられるかも。
block [block name] 継承元:ブロック(範囲)を定義し、継承先で値が変更される場所を設定する。

継承先:事前にブロックとして定義されている範囲のテキストを変更する。
for [val1] in [val2] val2 から要素を1つ1つ取り出し、 val1 に格納する形で、

for ~ endfor 間を繰り返す。

Java で言うところの foreach がこれに該当。

ちなみに、 Python の for は全て foreach な処理になっている。

if [条件] ~ else ~ endif

ifequal [val1] [val2] ~ endifequal

ifnotequal [val1] [val2] endnotequal

条件が真であれば、該当範囲が実行される。通常の if 条件と同じ。

ifequal は2つが等しい場合。

ifnotequal は2つが等しくない場合にそれぞれ実行される。

 

2.settings.py にテンプレートが置かれているディレクトリのパスを記述する。

TEMPLATE_DIRS = (
)

こうなっている部分があるかと思いますが、ここを下記のように書き換えます。

TEMPLATE_DIRS = (
   '[test_project までの絶対パス]/templates',
)

([test_project までの絶対パス] には、それぞれの環境に合ったパスを記述してください。)

 

3.views.py を編集する。

test_app に移動し、views.py を以下のように書き換えます。

from django.http import HttpResponse
from django.template import loader, RequestContext

def home(req):
    contexts = RequestContext(req, {
        'title' : 'hello django!',
        'data' : ('Hello', 'django', 'world'),
    })
    template = loader.get_template('test_app/home.html')
    return HttpResponse(template.render(contexts))

 

4.実行する。

image

Python + Django してみた。 その2.とりあえずページを出してみる。

どーも。みむらんです。
というわけで、 第1回 の続きとして適当にぺけぺけと。

 

1. settings.py を編集する。

settings.py を編集して、 任意のアプリケーションを読み込むように指示します。

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    # Uncomment the next line to enable the admin:
    # 'django.contrib.admin',
    # Uncomment the next line to enable admin documentation:
    # 'django.contrib.admindocs',
)

上記のようなことが書かれている箇所があるのですが、
そこに、

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'test_app',
)

というように、(最下行)
test_app (作成したアプリケーション名) を追記。

 

2. urls.py を編集。

urls.py を編集し、任意の URI へのアクセスを
任意のアプリケーションのコールバック関数に渡るように、 URI と関数を関連づけます。

”””
どの本読んでも、
みんなコールバック関数じゃなくて、関数やメソッドと書かれているから、関数と書いた方がいい気がしてきた。

・・他の言語での用語に合わせるならば、ハンドラとも書けそうな気がするけど、むー。 
”””

urlpatterns = patterns('',
    # Examples:
    # url(r'^$', 'test_project.views.home', name='home'),
    # url(r'^test_project/', include('test_project.foo.urls')),

    # Uncomment the admin/doc line below to enable admin documentation:
    # url(r'^admin/doc/', include('django.contrib.admindocs.urls')),

    # Uncomment the next line to enable the admin:
    # url(r'^admin/', include(admin.site.urls)),
)

デフォルトではこのようになっていますが、これを変更し、

urlpatterns = patterns('',
    (r'\$', 'test_app.views.home'),
)

という感じに。

こうすることで、全てのアクセスが、
test_app の、 views.py の中で定義されている、 home メソッドにて処理されるようになります。

第1引数は正規表現で記述しますので、
(r’^lang/(python|CSharp)/$’, ‘test_app.views.correct’)
なんて書き方も可能です。

 

3.views.py を書く。

先ほど作成した、アプリケーションのディレクトリへ移動して、
その中の views.py を編集し、処理内容を定義します。

views.py :

from django.http import HttpResponse

def home(req):
    return HttpResponse('Hello Django World !')

 

4.動かしてみる。

image

 

テキストが表示された!

Python + Django してみた。 その1.とりあえず動かしてみる。

image

どうもみむらんです。
ろーたすに「みむらん」と言われたので、 Web やるときは「みむらん」としようかな、いあいあ。

とりあえず、普段ネイティブアプリケーションや、クライアントソフトウェアをやる人が、
ウェブアプリケーションをやってみるコーナー第何弾ですよっと。

 

閑話休題

 

というわけで早速使ってみます。

 

1.下準備:インストール

$ easy_install django

これでおっけーです。

今回は Apache + mod_wsgi で行いましたが、
もしその辺の環境がそろってなくとも、単体でも実行可能なので問題ありません。

 

2.プロジェクト作成

作業ディレクトリに移動し、下記のコマンドを実行。

$ django-admin startproject testproject

 

3.アプリケーション作成

$ cd testproject
$ ./manage.py startapp testapp

2で作成したプロジェクト(上記例だと 「testproject」)のディレクトリに移動し、
startapp するだけです。

 

4. (Apache の場合のみ) mod_wsgi で動くようにする。

djangoをmod_wsgiやcgiで使うためのpythonスクリプト – ラシウラ

ここを参考に。

掲載されているスクリプトを、 index.wsgi として保存して、
.htaccess で見に行かせる。

またこのとき、以下のことを行う。

1.apps = os.path.dirname(__file__) の __file__ を settings.py のあるパスに書き換える。
2.必要に応じて、 os.environ[“DJANGO_SETTINGS_MODULE”]  の行をコメントアウト。

 

4.(スタンドアロン の場合のみ)  サーバを立ち上げる。

$ python manage.py runserver localhost:8080

 

5.アクセスする。

image

It worked! と出れば成功。

はろーふらすこ、はろーしなとら。

どうもみむらです。

ウェブ系のフレームワークは実は難しいんでしょ! と疑っていたのですが、
実際使ってみたら拍子抜けするレベルに簡単だったのでそのメモ。

意気込みを返せ-! っていう感じではありますが、
それだけ入りやすくて、本当に作りたい部分に集中出来るってことで良いんだと思います。

1.Ruby + Sinatra で Hello World

gem で sinatra を入れる。

下記のコード書く。

require 'sinatra'

get '/' do
   'Hello world!'
end

 

2.Python + Flask で Hello World

easy_install で Flask を入れる。

下記のコード書く。

from flask import Flask
app = Flask(__name__)

@app.route('/')
def func():
    return "Hello world!"

if __name__ == '__main__':
    app.run()

 

ということで、ひょえー。です。

Windows で へろく ってみる。

image

こんなこと言われましたが僕はめげません。
どうもみむらです。

Heroku  Cloud Application Platform

Heroku がなかなかおもしろい環境の予感がしたので、早速導入。

 

0. Heroku のアカウントを作る。

https://api.heroku.com/signup
Heroku Signup

ここから heroku のアカウントを作る。

 

1.Ruby 環境導入

RubyForge Ruby Installer for Windows ファイルリスト

ここから最新版の rubyinstaller を落としてきてインストール。

image

image

 

2. git インストール

Git – Fast Version Control System

Windows ロゴクリックして、最新版をとってきてインストール。

 

3.heroku 準備

Heroku  Dev Center  Getting Started with Heroku
ここを参照しながら。

3.1 heroku に必要なものをどっちゃりいれる。

image

gem install heroku rack bundler sinatra shotgun

3.2.SSH Key 作る。

image

Git Bash を立ち上げる。

image

$ ssh-keygen -t rsa -C "[e-mail アドレス]"
Generating public/private rsa key pair.
Enter file in which to save the key ( [環境によってここは変わる]  ): [何も打たずに Enter]
Created directory '...'
Enter passphrase (empty for no passphrase) : [パスワードを入れて Enter]
Enter same passphrase again: [同じパスワードをいれて Enter]

image

終わったらウィンドウを閉じる。

 

3.3. git 準備

image

git init
git add .
git commit -m "[コミットメッセージ (任意の文字列) ]"

image

heroku create

Enter your Heroku credentials.
Email : [heroku のログインに使用するメールアドレス]
Password : [heroku のログインに使用するパスワード]

4.おつかれさまでした


って、これだけで適当に完了。

一応サンプルコードを書いてみたり。

HerokuでSinatraを使ってHello worldする – アインシュタインの電話番号☎

ということで、ここを参考にしてみる。

とりあえず、私の環境だと動いたのでこんなところで。