Personal tools
You are here: Home linux Django 0.95で万歩計画(作成中)
Document Actions

Django 0.95で万歩計画(作成中)

by seko last modified 2006-08-27 22:05

一日一万歩を目指して、歩いた歩数を入力、編集、表示するアプリをDjangoで作ってみます。

日経ソフトウエアの9月号を見ながら進めるが、バージョン0.91を前提に書かれているため、最新のバージョン0.95とはかなり異なっていました。

そこで、次のページにあるドキュメントを見ながら進めることにしました。
http://ymasuda.jp/python/django/index.htm

DebianにDjango 0.95をインストール

python2.3.5のインストール
 ここを見てください。
PostgreSQL8とpsycopgをインストール

Django 0.95をインストール
 ここからダウンロードして

$ tar zxvf Django-0.95.tar.gz
$ cd Django-0.95
$ su
# /opt/python2.3.5/bin/python setup.py install

ネットワークから自動的にファイルをダウンロードしてインストールするようです。

プロジェクトの作成

mysiteというプロジェクトを作成しました。
$ cd /home/zope/django/
$ /opt/python2.3.5/bin/python /opt/python2.3.5/bin/django-admin.py startproject mysite
$ ls
mysite
$ cd mysite/
$  ls -l
合計 12
-rw-r--r--  1 zope zope    0 2006-08-27 17:01 __init__.py
-rw-r--r--  1 zope zope  546 2006-08-27 17:01 manage.py
-rw-r--r--  1 zope zope 2394 2006-08-27 17:01 settings.py
-rw-r--r--  1 zope zope  234 2006-08-27 17:01 urls.py
ファイルが自動生成されます。
settings.py : Django全体の動作環境を設定するファイルです
manage.py: テスト用サーバの起動やテーブルの作成などいろいろな用途に使用するプログラム
urls.py: ユーザが作成したWebアプリケーションとURLの対応を決定するファイル

開発用サーバの動作チェック
$ /opt/python2.3.5/bin/python manage.py runserver
Validating models...
0 errors found.

Django version 0.95, using settings 'mysite.settings'
Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

ブラウザで次のアドレスにアクセスすると
http://localhost:8000/

It worked!

Congratulations on your first Django-powered page.

と出れば、動作はOKです。



データベースの設定

setings.py を開いて、接続するデータベースを設定します
DATABASE_ENGINE = 'postgresql'           # 'postgresql', 'mysql', 'sqlite3' or 'ado_mssql'.
DATABASE_NAME = 'manpo'             # Or path to database file if using sqlite3.
DATABASE_USER = 'zope'             # Not used with sqlite3.
DATABASE_PASSWORD = 'password'         # Not used with sqlite3.
DATABASE_HOST = ''             # Set to empty string for localhost. Not used with sqlite3.
DATABASE_PORT = ''             # Set to empty string for default. Not used with sqlite3.


manpoというデータベースを作成
$  /usr/local/pgsql/bin/createdb manpo -O zope
CREATE DATABASE

$ /opt/python2.3.5/bin/python manage.py syncdb
You just installed Django's auth system, which means you don't have any superusers defined.
Would you like to create one now? (yes/no): yes

ここで作ったSuperuserを忘れないこと!!

データベースができていることを確認
zope@epia:~$ /usr/local/pgsql/bin/psql -l
$ /usr/local/pgsql/bin/psql -l
        List of databases
   Name    |  Owner   | Encoding
-----------+----------+-----------
 manpo     | zope     | SQL_ASCII


作られたテーブルの確認
zope@epia:~$ /usr/local/pgsql/bin/psql manpo
Welcome to psql 8.1.3, the PostgreSQL interactive terminal.

Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help with psql commands
       \g or terminate with semicolon to execute query
       \q to quit

manpo=# \dt
                  List of relations
 Schema |            Name            | Type  | Owner
--------+----------------------------+-------+-------
 public | auth_group                 | table | zope
 public | auth_group_permissions     | table | zope
 public | auth_message               | table | zope
 public | auth_permission            | table | zope
 public | auth_user                  | table | zope
 public | auth_user_groups           | table | zope
 public | auth_user_user_permissions | table | zope
 public | django_content_type        | table | zope
 public | django_session             | table | zope
 public | django_site                | table | zope
(10 rows)


djangotest-# \q

スケルトンを作成する

walkの部分がスケルトンの名前。自由に変更できる。
$ pwd
/home/zope/django/mysite
$ /opt/python2.3.5/bin/python manage.py startapp walk

 cd walk
$ ls -l
合計 8
-rw-r--r--  1 zope zope  0 2006-08-27 17:18 __init__.py
-rw-r--r--  1 zope zope 57 2006-08-27 17:18 models.py
-rw-r--r--  1 zope zope 26 2006-08-27 17:18 views.py


models.pyを次のように変更する。

from django.db import models
class Info(models.Model):
    date = models.DateTimeField()
    weeks = models.IntegerField()
    steps = models.IntegerField()

settings.pyの以下を編集

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'mysite.walk',
)

pythonのクラスからSQLを生成

$ pwd
/home/zope/django/mysite
$ /opt/python2.3.5/bin/python manage.py sql walk
BEGIN;
CREATE TABLE "walk_info" (
    "id" serial NOT NULL PRIMARY KEY,
    "date" timestamp with time zone NOT NULL,
    "weeks" integer NOT NULL,
    "steps" integer NOT NULL
);
COMMIT;


生成されたSQLに問題がなければ次を実行
$ /opt/python2.3.5/bin/python manage.py syncdb
これでテーブルが作成された。


データベースのAPIを試す
$ /opt/python2.3.5/bin/python manage.py shell
>>> from mysite.walk.models import Info
>>> Info.objects.all()
[<Info: Info object>]
>>> from datetime import datetime
>>> p=Info(date=datetime.now(),weeks=30,steps=6000)
>>> p.date
datetime.datetime(2006, 8, 27, 4, 22, 41, 244706)
>>> p.save()
>>> p.date
datetime.datetime(2006, 8, 27, 4, 22, 41, 244706)
>>> p.weeks
30
>>> p.date=datetime(2006,8,26,0,0)
>>> p.save
<bound method Info.save of <Info: Info object>>
>>> p.date
datetime.datetime(2006, 8, 26, 0, 0)
>>>

WEBアプリの雛型作り

settings.pyファイルのINSTALLED_APPSにdjango.contrib.adminを追加

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'walkman.nsw',
    'django.contrib.admin',
)

$ /opt/python2.3.5/bin/python manage.py syncdb

mysiteディレクトリのurls.pyの次の部分のコメントをはずします。
    # Uncomment this for admin:
     (r'^admin/', include('django.contrib.admin.urls')),

テスト用WEBサーバを立ち上げます。
$ /opt/python2.3.5/bin/python manage.py runserver

次のページにアクセスすると、ユーザ名とパスワードを聞いてくるので、最初の方で作ったsuperuserのものを入力する。
http://localhost:8000/admin/

すると管理者用サイトが開く。


$ vi  /home/zope/django/mysite/walk/models.py
で、class Admin以下を追加

class Info(models.Model):
    date = models.DateTimeField()
    weeks = models.IntegerField()
    steps = models.IntegerField()
    class Admin:
        fields = (
            (None, {'fields': ('date', 'steps','weeks')}),
        )
        list_display = ('date','steps','weeks')
        list_filter = ['weeks','date']

« July 2017 »
Su Mo Tu We Th Fr Sa
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
 

Powered by Plone, the Open Source Content Management System

This site conforms to the following standards: