Your SlideShare is downloading. ×
0
Django
Django
biography
Django Reinhardt 1910                   Django 2003   2005   7

                   Rails



discography
w...
main features
main features
O/R Mapper

Automatic Admin Interface

Elegant URL Design

Template

Cache

i18n
O/R Mapper
O/R Mapper
DRY

Model
O/R Mapper
DRY

Model

        Model   Database
O/R Mapper
DRY

Model

         Model                Database

 SQLObject

 SELECT           keyword args

 ForeignKey    ...
Automatic Admin I/F
Automatic Admin I/F
model




rails    scafford

TurboGears      catwalk
Automatic Admin I/F
model




rails    scafford

TurboGears      catwalk
Automatic Admin I/F
model




rails    scafford

TurboGears      catwalk
Elegant URL Desgin
Elegant URL Desgin
      URL




emacs PROJECT/apps/project/urls.py

(r'^Task/(?P<task_id>d+)/edit/$','Project.apps.projec...
Elegant URL Desgin
      URL



http://host/WorkStyle/Task/5/edit/
emacs PROJECT/apps/project/urls.py

(r'^Task/(?P<task_i...
Elegant URL Desgin
      URL



http://host/WorkStyle/Task/5/edit/
                           5
emacs PROJECT/apps/project...
Elegant URL Desgin
      URL




emacs PROJECT/apps/project/urls.py

(r'^Task/(?P<task_id>d+)/edit/$','Project.apps.projec...
Template
Template


                  {{ XXX:escape }}


{% if task.update_date %}
 <tr>
  <th nowrap="nowrap">{% trans "Last Updat...
Template


                  {{ XXX:escape }}


{% if task.update_date %}                 filter
 <tr>
  <th nowrap="nowrap...
Template


                  {{ XXX:escape }}
                                     Tag
{% if task.update_date %}
 <tr>
  <...
cache
cache
       3

HTTP
Cache
cache                       locmem(

                     WorkStyle

           sqlite3                    SQL 5   O...
Cache
 cache                       locmem(

                      WorkStyle

            sqlite3                    SQL 5 ...
Cache
 cache                       locmem(

                      WorkStyle

            sqlite3                    SQL 5 ...
i18n
i18n
po

                      settings.py

Automatic Admin I/F
i18n
    po

                                    settings.py

    Automatic Admin I/F
   code
            _(“message”)


 ...
i18n
    po

                                         settings.py

    Automatic Admin I/F
   po
            DJANGO_HOME/b...
i18n
po

                                     settings.py

Automatic Admin I/F

         > emacs settings.py

          MI...
Python2.3




Apache2.x+mod_python3.x

fast-cgi(WSGI)

                 PostgreSQL/MySQL/SQLite3/SQLServer
Project

Django




Model




URL

view

Template
Django
   Django                  python manage.py init



                   python manage.py startapp APP
  Project

APP...
NO
                    django-admin.py startproject PROJECT

YES

      Django
                    python manage.py init

...
Project

django-admin.py startproject WorkStyle

 WorkStyle
          + apps
            __init__.py
          __init__.py...
Project

django-admin.py startproject WorkStyle

 WorkStyle
          + apps
            __init__.py
          __init__.py...
> emacs Project/settings.py

# 'postgresql', 'mysql', 'sqlite3' or 'ado_mssql'.
DATABASE_ENGINE   = 'postgresql'
DATABASE_...
Django
       Django

python manage.py init

  ## DJANGO CORE TABLE
  auth_groups        auth_groups_permissions
  auth_me...
python manage.py startapp workstyle

 WorkStyle
          + apps
            __init__.py
                 + workstyle
    ...
python manage.py startapp workstyle

 WorkStyle
          + apps
            __init__.py
                 + workstyle
    ...
python manage.py startapp workstyle

 WorkStyle
          + apps
            __init__.py
                 + workstyle
    ...
python manage.py startapp workstyle

 WorkStyle
          + apps
            __init__.py
                 + workstyle
    ...
python manage.py startapp workstyle

 WorkStyle
          + apps
            __init__.py
                 + workstyle
    ...
python manage.py startapp workstyle

 WorkStyle
          + apps
            __init__.py
                 + workstyle
    ...
Model
                                  Model

> emacs Project/apps/workstyle/models/workstyle.py

from django.core import...
Model
                                  Model
                               meta.Model
> emacs Project/apps/workstyle/mod...
Model

python manage.py install workstyle

   ## APPLICATION TABLE
   workstyle_tasks       workstyle_tags
   workstyle_ta...
Model

python manage.py install workstyle

   ## APPLICATION TABLE
   workstyle_tasks       workstyle_tags
   workstyle_ta...
Model

python manage.py install workstyle

   ## APPLICATION TABLE
   workstyle_tasks       workstyle_tags
   workstyle_ta...
O/R
       Python

> export DJANGO_SETTINGS_MODULE=WorkStyle.settings
> python
O/R
         Python

> export DJANGO_SETTINGS_MODULE=WorkStyle.settings
> python

import django.models.workstyle import ta...
O/R
       Python

> export DJANGO_SETTINGS_MODULE=WorkStyle.settings
> python


import django.models.workstyle import tas...
O/R
       Python

> export DJANGO_SETTINGS_MODULE=WorkStyle.settings
> python


import django.models.workstyle import tas...
O/R
        Python

> export DJANGO_SETTINGS_MODULE=WorkStyle.settings
> python


import django.models.workstyle import ta...
O/R
        Python

> export DJANGO_SETTINGS_MODULE=WorkStyle.settings
> python


import django.models.workstyle import ta...
URL Dispatcher

 > emacs Project/urls.py

    (r'^WorkStyle/', include('WorkStyle.apps.workstyle.urls')),

 > touch Projec...
URL Dispatcher

 > emacs Project/urls.py

    (r'^WorkStyle/', include('WorkStyle.apps.workstyle.urls')),

 > touch Projec...
> emacs WorkStyle/apps/workstyle/task.py

def edit_task(request, task_id) :
    task = get_object_or_404(tasks,pk=task_id)...
> emacs WorkStyle/apps/workstyle/task.py

def edit_task(request, task_id) :
    task = get_object_or_404(tasks,pk=task_id)...
Manipulator
        model

                      Manipulator      (Add,Change)
def create(request):
  manipulator = tasks....
Manipulator
        model                         Add Change

                      Manipulator      (Add,Change)
def crea...
Manipulator
       validation
        model

     errors           Manipulator      (Add,Change)
def create(request):
  ma...
Manipulator
        model

                      Manipulator      (Add,Change)
def create(request):
  manipulator = tasks....
Manipulator
class TaskManipulator(formfields.Manipulator):
    def __init__(self):
        self.fields = (
            for...
Manipulator
#view
  manipulator = TaskManipulator()
  try :
      task = tasks.get_object(pk=task_id)
  except ObjectDoesN...
Template
        settings.py Template

> emacs Project/settings.py

  TEMPLATE_DIRS = (
      WORKSTYLE_BASE_DIR + "/apps/...
Template
        settings.py Template

> emacs Project/settings.py

  TEMPLATE_DIRS = (
      WORKSTYLE_BASE_DIR + "/apps/...
Template
        settings.py Template

> emacs Project/settings.py

  TEMPLATE_DIRS = (
      WORKSTYLE_BASE_DIR + "/apps/...
Template
        settings.py Template

> emacs Project/settings.py

  TEMPLATE_DIRS = (
      WORKSTYLE_BASE_DIR + "/apps/...
> emacs Project/apps/workstyle/templatetags/wsfilter.py

 from django.core import template

 register = template.Library()...
> emacs Porject/apps/workstyle/task.py
from WorkStyle.apps.workstyle.templatetags import wsfilters
> emacs Porject/apps/workstyle/task.py
from WorkStyle.apps.workstyle.templatetags import wsfilters




> emacs Project/app...
Test
      pyunit

simon.bofh.ms
Django Milestone
0.92
Magic

1.00
www.everes.net
伝説のギタリストじゃない方のDjango
Upcoming SlideShare
Loading in...5
×

伝説のギタリストじゃない方のDjango

1,640

Published on

2006年1月にPythonWorkshop03でDjangoを紹介した時のスライドです。

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,640
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
9
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide
  • Pythonista&amp;#x3092;&amp;#x76EE;&amp;#x6307;&amp;#x3057;&amp;#x3066;&amp;#x3044;&amp;#x307E;&amp;#x3059;&amp;#x3002;
    Python&amp;#x306F;&amp;#x4E00;&amp;#x756A;&amp;#x6577;&amp;#x5C45;&amp;#x306E;&amp;#x9AD8;&amp;#x3044;&amp;#x8A00;&amp;#x8A9E;&amp;#x306A;&amp;#x306E;&amp;#x3067;&amp;#x3001;&amp;#x5230;&amp;#x9054;&amp;#x306F;&amp;#x56F0;&amp;#x96E3;&amp;#x3060;&amp;#x3068;&amp;#x304A;&amp;#x3082;&amp;#x3063;&amp;#x3066;&amp;#x3044;&amp;#x307E;&amp;#x3059;&amp;#x3002;
    &amp;#x4F55;&amp;#x3067;&amp;#x56F0;&amp;#x96E3;&amp;#x304B;&amp;#x3068;&amp;#x3044;&amp;#x3046;&amp;#x3068;&amp;#x3001;&amp;#x8077;&amp;#x5834;&amp;#x3067;&amp;#x306F;Python&amp;#x306E;&amp;#x30B3;&amp;#x30FC;&amp;#x30C9;&amp;#x304C;&amp;#x66F8;&amp;#x3051;&amp;#x308B;&amp;#x307B;&amp;#x304B;&amp;#x306B;&amp;#x3082;&amp;#x300C;&amp;#x30C7;&amp;#x30B6;&amp;#x30A4;&amp;#x30F3;&amp;#x304C;&amp;#x3059;&amp;#x3089;&amp;#x3063;&amp;#x3068;&amp;#x7F8E;&amp;#x3057;&amp;#x304F;&amp;#x3067;&amp;#x304D;&amp;#x308B;&amp;#x300D;&amp;#x300C;&amp;#x6839;&amp;#x6027;&amp;#x7CFB;&amp;#x3067;&amp;#x306A;&amp;#x3044;&amp;#x30A2;&amp;#x30A6;&amp;#x30C8;&amp;#x30C9;&amp;#x30A2;&amp;#x3063;&amp;#x307D;&amp;#x3044;&amp;#x30B9;&amp;#x30DD;&amp;#x30FC;&amp;#x30C4;&amp;#x304C;&amp;#x51FA;&amp;#x6765;&amp;#x308B;&amp;#x300D;&amp;#x3053;&amp;#x3068;&amp;#x3092;Pythonista&amp;#x306E;&amp;#x8981;&amp;#x4EF6;&amp;#x3068;&amp;#x3057;&amp;#x3066;&amp;#x3044;&amp;#x308B;&amp;#x304B;&amp;#x3089;&amp;#x3067;&amp;#x3059;&amp;#x3002;
    &amp;#x3067;&amp;#x3001;Django&amp;#x3067;&amp;#x3059;&amp;#x3002;Python&amp;#x306E;Web&amp;#x30D5;&amp;#x30EC;&amp;#x30FC;&amp;#x30E0;&amp;#x30EF;&amp;#x30FC;&amp;#x30AF;&amp;#x3067;&amp;#x3059;&amp;#x3002;&amp;#x30E9;&amp;#x30A4;&amp;#x30BB;&amp;#x30F3;&amp;#x30B9;&amp;#x306F;BSD&amp;#x3002;
  • Django&amp;#x3092;&amp;#x30B0;&amp;#x30B0;&amp;#x30EB;&amp;#x3068;&amp;#x3001;&amp;#x4E0A;&amp;#x4F4D;&amp;#x306F;Django Reinhardt&amp;#x306B;&amp;#x95A2;&amp;#x3059;&amp;#x308B;&amp;#x3082;&amp;#x306E;&amp;#x3070;&amp;#x304B;&amp;#x308A;&amp;#x3067;&amp;#x3066;&amp;#x304D;&amp;#x307E;&amp;#x3059;&amp;#x3002;&amp;#x6D41;&amp;#x77F3;&amp;#x306B;&amp;#x672C;&amp;#x5BB6;&amp;#x306F;&amp;#x30DA;&amp;#x30FC;&amp;#x30B8;&amp;#x30E9;&amp;#x30F3;&amp;#x30AF;&amp;#x304C;&amp;#x4E0A;&amp;#x304C;&amp;#x3063;&amp;#x3066;&amp;#x304B;&amp;#x306A;&amp;#x308A;&amp;#x4E0A;&amp;#x4F4D;&amp;#x306B;&amp;#x51FA;&amp;#x3066;&amp;#x304F;&amp;#x308B;&amp;#x3088;&amp;#x3046;&amp;#x306B;&amp;#x306A;&amp;#x308A;&amp;#x307E;&amp;#x3057;&amp;#x305F;&amp;#x3001;&amp;#x79C1;&amp;#x306E;&amp;#x30D6;&amp;#x30ED;&amp;#x30B0;&amp;#x306F;&amp;#x3042;&amp;#x307E;&amp;#x308A;&amp;#x4E0A;&amp;#x306B;&amp;#x304D;&amp;#x307E;&amp;#x305B;&amp;#x3093;&amp;#x3002;
    &amp;#x3088;&amp;#x304F;Django&amp;#x306F;after Rails&amp;#x3068;&amp;#x3057;&amp;#x3066;&amp;#x30EA;&amp;#x30B9;&amp;#x30C8;&amp;#x3055;&amp;#x308C;&amp;#x307E;&amp;#x3059;&amp;#x304C;&amp;#x3001;&amp;#x958B;&amp;#x767A;&amp;#x81EA;&amp;#x4F53;&amp;#x306F;Rails&amp;#x3068;&amp;#x540C;&amp;#x6642;&amp;#x671F;&amp;#x306B;&amp;#x958B;&amp;#x59CB;&amp;#x3055;&amp;#x308C;&amp;#x3066;&amp;#x3044;&amp;#x307E;&amp;#x3059;&amp;#x3002;
    Django&amp;#x306F;&amp;#x5730;&amp;#x65B9;&amp;#x65B0;&amp;#x805E;&amp;#x306E;&amp;#x30B5;&amp;#x30A4;&amp;#x30C8;&amp;#x69CB;&amp;#x7BC9;&amp;#x306E;&amp;#x305F;&amp;#x3081;&amp;#x306B;&amp;#x4F5C;&amp;#x308A;&amp;#x4E0A;&amp;#x3052;&amp;#x3089;&amp;#x308C;&amp;#x3066;&amp;#x304D;&amp;#x305F;&amp;#x30D5;&amp;#x30EC;&amp;#x30FC;&amp;#x30E0;&amp;#x30EF;&amp;#x30FC;&amp;#x30AF;&amp;#x306A;&amp;#x306E;&amp;#x3067;&amp;#x3001;CMS&amp;#x7684;&amp;#x306A;&amp;#x3082;&amp;#x306E;&amp;#x306B;&amp;#x5BFE;&amp;#x3059;&amp;#x308B;&amp;#x5074;&amp;#x9762;&amp;#x306F;&amp;#x975E;&amp;#x5E38;&amp;#x306B;&amp;#x5F37;&amp;#x3044;&amp;#x3067;&amp;#x3059;&amp;#x3002;&amp;#x30EF;&amp;#x30B7;&amp;#x30F3;&amp;#x30C8;&amp;#x30F3;&amp;#x30DD;&amp;#x30B9;&amp;#x30C8;&amp;#x306E;&amp;#x6570;&amp;#x767E;&amp;#x4E07;&amp;#x4EF6;&amp;#x306E;&amp;#x30C7;&amp;#x30FC;&amp;#x30BF;&amp;#x3092;&amp;#x4FDD;&amp;#x6301;&amp;#x3057;&amp;#x3066;&amp;#x3044;&amp;#x308B;&amp;#x8B70;&amp;#x6C7A;&amp;#x30C7;&amp;#x30FC;&amp;#x30BF;&amp;#x30D9;&amp;#x30FC;&amp;#x30B9;&amp;#x30B5;&amp;#x30A4;&amp;#x30C8;&amp;#x306B;&amp;#x3082;&amp;#x5229;&amp;#x7528;&amp;#x3055;&amp;#x308C;&amp;#x3066;&amp;#x3044;&amp;#x307E;&amp;#x3059;&amp;#x3002;&amp;#x30EF;&amp;#x30B7;&amp;#x30F3;&amp;#x30C8;&amp;#x30F3;&amp;#x30DD;&amp;#x30B9;&amp;#x30C8;&amp;#x306B;&amp;#x306F;&amp;#x6700;&amp;#x8FD1;&amp;#x65B0;&amp;#x3057;&amp;#x3044;Django&amp;#x3067;&amp;#x3067;&amp;#x304D;&amp;#x305F;&amp;#x30A2;&amp;#x30D7;&amp;#x30EA;&amp;#x30B1;&amp;#x30FC;&amp;#x30B7;&amp;#x30E7;&amp;#x30F3;&amp;#x304C;&amp;#x5897;&amp;#x3048;&amp;#x305F;&amp;#x305D;&amp;#x3046;&amp;#x306A;&amp;#x306E;&amp;#x3067;&amp;#x3001;&amp;#x30EF;&amp;#x30B7;&amp;#x30F3;&amp;#x30C8;&amp;#x30F3;&amp;#x30DD;&amp;#x30B9;&amp;#x30C8;&amp;#x306B;&amp;#x306F;&amp;#x6C17;&amp;#x306B;&amp;#x5165;&amp;#x3089;&amp;#x308C;&amp;#x305F;&amp;#x3088;&amp;#x3046;&amp;#x3067;&amp;#x3059;&amp;#x3002;
  • Web&amp;#x30A2;&amp;#x30D7;&amp;#x30EA;&amp;#x30B1;&amp;#x30FC;&amp;#x30B7;&amp;#x30E7;&amp;#x30F3;&amp;#x30D5;&amp;#x30EC;&amp;#x30FC;&amp;#x30E0;&amp;#x30EF;&amp;#x30FC;&amp;#x30AF;&amp;#x306B;&amp;#x306F;&amp;#x7121;&amp;#x3044;&amp;#x3068;&amp;#x306F;&amp;#x3044;&amp;#x3048;&amp;#x306A;&amp;#x304F;&amp;#x306A;&amp;#x3063;&amp;#x3066;&amp;#x304D;&amp;#x305F;O/R&amp;#x30DE;&amp;#x30C3;&amp;#x30D4;&amp;#x30F3;&amp;#x30B0;&amp;#x3068;&amp;#x304B;&amp;#x3001;Django&amp;#x306E;&amp;#x30B5;&amp;#x30A4;&amp;#x30C8;&amp;#x3067;&amp;#x30E1;&amp;#x30A4;&amp;#x30F3;&amp;#x6A5F;&amp;#x80FD;&amp;#x3068;&amp;#x3055;&amp;#x308C;&amp;#x3066;&amp;#x3044;&amp;#x308B;&amp;#x7269;&amp;#x305F;&amp;#x3061;&amp;#x3092;&amp;#x30EA;&amp;#x30B9;&amp;#x30C8;&amp;#x3057;&amp;#x3066;&amp;#x307F;&amp;#x307E;&amp;#x3057;&amp;#x305F;&amp;#x3002;
    &amp;#x65B0;&amp;#x805E;&amp;#x7CFB;&amp;#x30B5;&amp;#x30A4;&amp;#x30C8;&amp;#x306A;&amp;#x306E;&amp;#x3067;&amp;#x30AD;&amp;#x30E3;&amp;#x30C3;&amp;#x30B7;&amp;#x30E5;&amp;#x306F;&amp;#x7279;&amp;#x306B;&amp;#x529B;&amp;#x304C;&amp;#x5165;&amp;#x3063;&amp;#x3066;&amp;#x3044;&amp;#x307E;&amp;#x3059;&amp;#x3002;&amp;#x3053;&amp;#x3053;&amp;#x306E;&amp;#x3068;&amp;#x3053;&amp;#x308D;&amp;#x696D;&amp;#x52D9;&amp;#x30B7;&amp;#x30B9;&amp;#x30C6;&amp;#x30E0;&amp;#x3092;&amp;#x3084;&amp;#x3063;&amp;#x3066;&amp;#x3044;&amp;#x308B;&amp;#x81EA;&amp;#x5206;&amp;#x3068;&amp;#x3057;&amp;#x3066;&amp;#x306F;&amp;#x3001;&amp;#x963F;&amp;#x5446;&amp;#x3068;&amp;#x3057;&amp;#x304B;&amp;#x601D;&amp;#x3048;&amp;#x306A;&amp;#x3044;&amp;#x30AD;&amp;#x30E3;&amp;#x30C3;&amp;#x30B7;&amp;#x30E5;&amp;#x304C;&amp;#x3042;&amp;#x308A;&amp;#x307E;&amp;#x3059;&amp;#x3002;
    i18n&amp;#x306F;&amp;#x30AA;&amp;#x30FC;&amp;#x30D7;&amp;#x30F3;&amp;#x30BD;&amp;#x30FC;&amp;#x30B9;&amp;#x5316;&amp;#x3057;&amp;#x3066;&amp;#x3059;&amp;#x3050;&amp;#x306B;&amp;#x53D6;&amp;#x308A;&amp;#x5165;&amp;#x308C;&amp;#x3089;&amp;#x308C;&amp;#x3066;&amp;#x3044;&amp;#x308B;&amp;#x306E;&amp;#x3067;&amp;#x3001;Admin Interface&amp;#x306A;&amp;#x3069;&amp;#x304C;&amp;#x65E2;&amp;#x306B;&amp;#x6570;&amp;#x5341;&amp;#x30AB;&amp;#x56FD;&amp;#x8A9E;&amp;#x306B;&amp;#x5BFE;&amp;#x5FDC;&amp;#x3057;&amp;#x3066;&amp;#x3044;&amp;#x307E;&amp;#x3059;&amp;#x3002;
    &amp;#x65E5;&amp;#x672C;&amp;#x8A9E;&amp;#x3082;&amp;#x602A;&amp;#x3057;&amp;#x3044;&amp;#x8A33;&amp;#x306E;&amp;#x3082;&amp;#x306E;&amp;#x304C;&amp;#x6700;&amp;#x8FD1;&amp;#x306E;&amp;#x7248;&amp;#x306B;&amp;#x306F;&amp;#x5165;&amp;#x3063;&amp;#x3066;&amp;#x3044;&amp;#x307E;&amp;#x3059;&amp;#x3002;
  • DRY&amp;#x306E;&amp;#x539F;&amp;#x5247;&amp;#x3068;&amp;#x3044;&amp;#x3046;&amp;#x306E;&amp;#x306F;&amp;#x3001;&amp;#x30C9;&amp;#x30E1;&amp;#x30A4;&amp;#x30F3;&amp;#x30E2;&amp;#x30C7;&amp;#x30EB;&amp;#x306B;&amp;#x95A2;&amp;#x3059;&amp;#x308B;&amp;#x60C5;&amp;#x5831;&amp;#x306F;&amp;#x5168;&amp;#x3066;&amp;#x4E00;&amp;#x30AB;&amp;#x6240;&amp;#x306B;&amp;#x5B58;&amp;#x5728;&amp;#x3059;&amp;#x308B;&amp;#x3079;&amp;#x304D;&amp;#x3068;&amp;#x3059;&amp;#x308B;&amp;#x3082;&amp;#x306E;&amp;#x3067;&amp;#x3059;&amp;#x3002;&amp;#x30C7;&amp;#x30FC;&amp;#x30BF;&amp;#x30D9;&amp;#x30FC;&amp;#x30B9;&amp;#x306E;ER&amp;#x56F3;&amp;#x3084;&amp;#x3089;XML&amp;#x306E;&amp;#x8A2D;&amp;#x5B9A;&amp;#x30D5;&amp;#x30A1;&amp;#x30A4;&amp;#x30EB;&amp;#x3084;&amp;#x3089;&amp;#x3001;&amp;#x30BD;&amp;#x30FC;&amp;#x30B9;&amp;#x30B3;&amp;#x30FC;&amp;#x30C9;&amp;#x3084;&amp;#x3089;&amp;#x306B;&amp;#x8A2D;&amp;#x5B9A;&amp;#x304C;&amp;#x5206;&amp;#x6563;&amp;#x3059;&amp;#x3079;&amp;#x304D;&amp;#x3067;&amp;#x306A;&amp;#x3044;&amp;#x3068;&amp;#x3044;&amp;#x3046;&amp;#x3053;&amp;#x3068;&amp;#x3067;&amp;#x3059;&amp;#x3002; Rails&amp;#x306E;&amp;#x30C7;&amp;#x30FC;&amp;#x30BF;&amp;#x30D9;&amp;#x30FC;&amp;#x30B9;&amp;#x3092;&amp;#x57FA;&amp;#x672C;&amp;#x3068;&amp;#x3059;&amp;#x308B;&amp;#x30A2;&amp;#x30D7;&amp;#x30ED;&amp;#x30FC;&amp;#x30C1;&amp;#x3068;&amp;#x306F;&amp;#x53CD;&amp;#x5BFE;&amp;#x306B;&amp;#x3001;Django&amp;#x306F;model&amp;#x3092;&amp;#x57FA;&amp;#x672C;&amp;#x3068;&amp;#x3057;&amp;#x305F;&amp;#x30A2;&amp;#x30D7;&amp;#x30ED;&amp;#x30FC;&amp;#x30C1;&amp;#x3092;&amp;#x884C;&amp;#x3044;&amp;#x307E;&amp;#x3059;&amp;#x3002; &amp;#x305F;&amp;#x3060;&amp;#x3057;Model&amp;#x30D9;&amp;#x30FC;&amp;#x30B9;&amp;#x306E;DRY&amp;#x306F;&amp;#x3042;&amp;#x304F;&amp;#x307E;&amp;#x3067;&amp;#x539F;&amp;#x5247;&amp;#x306A;&amp;#x306E;&amp;#x3067;&amp;#x3001;&amp;#x30EC;&amp;#x30AC;&amp;#x30B7;&amp;#x30FC;&amp;#x306A;&amp;#x30C7;&amp;#x30FC;&amp;#x30BF;&amp;#x30D9;&amp;#x30FC;&amp;#x30B9;&amp;#x3068;&amp;#x9023;&amp;#x643A;&amp;#x3059;&amp;#x308B;&amp;#x5834;&amp;#x5408;&amp;#x7528;&amp;#x306B;&amp;#x3001;&amp;#x30EA;&amp;#x30D0;&amp;#x30FC;&amp;#x30B9;(inspectdb)&amp;#x3082;&amp;#x2019;&amp;#x4E00;&amp;#x5FDC;&amp;#x2019;&amp;#x7528;&amp;#x610F;&amp;#x3055;&amp;#x308C;&amp;#x3066;&amp;#x3044;&amp;#x307E;&amp;#x3059;&amp;#x3002;
    &amp;#x30E6;&amp;#x30CB;&amp;#x30FC;&amp;#x30AF;&amp;#x30AD;&amp;#x30FC;&amp;#x3084;Index&amp;#x306E;&amp;#x8A2D;&amp;#x5B9A;&amp;#x307E;&amp;#x3067;&amp;#x3082;Model&amp;#x306B;&amp;#x8A18;&amp;#x8FF0;&amp;#x3067;&amp;#x304D;&amp;#x307E;&amp;#x3059;&amp;#x3002;
    &amp;#x73FE;&amp;#x6642;&amp;#x70B9;&amp;#x3067;&amp;#x306F;&amp;#x9ED2;&amp;#x9B54;&amp;#x8853;&amp;#x7684;&amp;#x306A;&amp;#x90E8;&amp;#x5206;&amp;#x304C;&amp;#x3042;&amp;#x308A;&amp;#x307E;&amp;#x3059;&amp;#x304C;&amp;#x3001;&amp;#x30D0;&amp;#x30FC;&amp;#x30B8;&amp;#x30E7;&amp;#x30F3;0.92&amp;#x3067;&amp;#x306F;&amp;#x591A;&amp;#x304F;&amp;#x306E;&amp;#x9ED2;&amp;#x9B54;&amp;#x8853;&amp;#x304C;&amp;#x53D6;&amp;#x308A;&amp;#x9664;&amp;#x304B;&amp;#x308C;&amp;#x307E;&amp;#x3059;&amp;#x306E;&amp;#x3067;&amp;#x3001;&amp;#x30B3;&amp;#x30FC;&amp;#x30C9;&amp;#x304B;&amp;#x3089;&amp;#x8FFD;&amp;#x3048;&amp;#x306A;&amp;#x3044;&amp;#x3082;&amp;#x306E;&amp;#x304C;&amp;#x5ACC;&amp;#x3044;&amp;#x306A;&amp;#x4EBA;&amp;#x3082;&amp;#x5927;&amp;#x4E08;&amp;#x592B;&amp;#x3067;&amp;#x3059;&amp;#x3002;
  • &amp;#x306A;&amp;#x304B;&amp;#x306A;&amp;#x304B;&amp;#x7F8E;&amp;#x3057;&amp;#x3044;&amp;#x3002;
    &amp;#x64CD;&amp;#x4F5C;&amp;#x30D5;&amp;#x30ED;&amp;#x30FC;&amp;#x306E;&amp;#x7F8E;&amp;#x3057;&amp;#x3055;&amp;#x306F;TurboGears&amp;#x306E;AJAX&amp;#x3092;&amp;#x4F7F;&amp;#x7528;&amp;#x3057;&amp;#x305F;&amp;#x30D1;&amp;#x30BF;&amp;#x30FC;&amp;#x30F3;&amp;#x306B;&amp;#x6575;&amp;#x3044;&amp;#x307E;&amp;#x305B;&amp;#x3093;&amp;#x304C;&amp;#x898B;&amp;#x305F;&amp;#x76EE;&amp;#x306F;&amp;#x304D;&amp;#x3063;&amp;#x3068;&amp;#x4E00;&amp;#x756A;&amp;#x7F8E;&amp;#x3057;&amp;#x3044;&amp;#x3067;&amp;#x3059;&amp;#x3002;
    model&amp;#x3067;&amp;#x8A18;&amp;#x8FF0;&amp;#x3057;&amp;#x305F;&amp;#x5236;&amp;#x9650;&amp;#x306F;&amp;#x81EA;&amp;#x52D5;&amp;#x3067;&amp;#x30D0;&amp;#x30EA;&amp;#x30C7;&amp;#x30FC;&amp;#x30BF;&amp;#x304C;&amp;#x9069;&amp;#x7528;&amp;#x3055;&amp;#x308C;&amp;#x307E;&amp;#x3059;&amp;#x306E;&amp;#x3067;&amp;#x3001;model&amp;#x3067;&amp;#x8868;&amp;#x73FE;&amp;#x3067;&amp;#x304D;&amp;#x308B;&amp;#x5236;&amp;#x9650;&amp;#x306E;&amp;#x307F;&amp;#x306E;&amp;#x30C7;&amp;#x30FC;&amp;#x30BF;&amp;#x7BA1;&amp;#x7406;&amp;#x753B;&amp;#x9762;&amp;#x306F;&amp;#x81EA;&amp;#x52D5;&amp;#x3067;&amp;#x51FA;&amp;#x6765;&amp;#x308B;&amp;#x7269;&amp;#x3067;&amp;#x5341;&amp;#x5206;&amp;#x3067;&amp;#x3057;&amp;#x3087;&amp;#x3046;&amp;#x3002;&amp;#x95A2;&amp;#x9023;&amp;#x3082;&amp;#x3001;&amp;#x3042;&amp;#x308B;&amp;#x7A0B;&amp;#x5EA6;&amp;#x306E;&amp;#x691C;&amp;#x7D22;&amp;#x3082;&amp;#x5BB9;&amp;#x6613;&amp;#x306B;&amp;#x8A2D;&amp;#x5B9A;&amp;#x3067;&amp;#x304D;&amp;#x307E;&amp;#x3059;&amp;#x3002;
    &amp;#x3042;&amp;#x3068;&amp;#x3067;&amp;#x6642;&amp;#x9593;&amp;#x304C;&amp;#x3042;&amp;#x308C;&amp;#x3070;&amp;#x753B;&amp;#x9762;&amp;#x3092;&amp;#x304A;&amp;#x898B;&amp;#x305B;&amp;#x3057;&amp;#x307E;&amp;#x3059;&amp;#x3002;
  • Zope&amp;#x3068;&amp;#x304B;&amp;#x3092;&amp;#x5229;&amp;#x7528;&amp;#x3055;&amp;#x308C;&amp;#x3066;&amp;#x3044;&amp;#x308B;&amp;#x65B9;&amp;#x306E;&amp;#x5834;&amp;#x5408;&amp;#x306F;&amp;#x3001;&amp;#x898B;&amp;#x6163;&amp;#x308C;&amp;#x305F;URL&amp;#x3060;&amp;#x3068;&amp;#x601D;&amp;#x3044;&amp;#x307E;&amp;#x3059;&amp;#x3002;
    &amp;#x6B63;&amp;#x898F;&amp;#x8868;&amp;#x73FE;&amp;#x3067;&amp;#x8A18;&amp;#x8FF0;&amp;#x3092;&amp;#x3057;&amp;#x3001;&amp;#x30DE;&amp;#x30C3;&amp;#x30C1;&amp;#x3057;&amp;#x305F;&amp;#x5F15;&amp;#x6570;&amp;#x3092;&amp;#x30B3;&amp;#x30F3;&amp;#x30C8;&amp;#x30ED;&amp;#x30FC;&amp;#x30E9;&amp;#x306B;&amp;#x3042;&amp;#x305F;&amp;#x308B;&amp;#x30D5;&amp;#x30A1;&amp;#x30F3;&amp;#x30AF;&amp;#x30B7;&amp;#x30E7;&amp;#x30F3;&amp;#x306B;&amp;#x6E21;&amp;#x3057;&amp;#x307E;&amp;#x3059;&amp;#x3002;
    urls.py&amp;#x306B;&amp;#x30DE;&amp;#x30C3;&amp;#x30C1;&amp;#x3057;&amp;#x306A;&amp;#x3044;&amp;#x5834;&amp;#x5408;&amp;#x306F;HTTP&amp;#x306E;404&amp;#x30A8;&amp;#x30E9;&amp;#x30FC;&amp;#x304C;&amp;#x767A;&amp;#x751F;&amp;#x3057;&amp;#x307E;&amp;#x3059;&amp;#x3002;
    &amp;#x5F8C;&amp;#x3067;&amp;#x8AAC;&amp;#x660E;&amp;#x3059;&amp;#x308B;&amp;#x30AD;&amp;#x30E3;&amp;#x30C3;&amp;#x30B7;&amp;#x30E5;&amp;#x3067;&amp;#x91CD;&amp;#x8981;&amp;#x306B;&amp;#x306A;&amp;#x3063;&amp;#x3066;&amp;#x304F;&amp;#x308B;&amp;#x306E;&amp;#x3067;&amp;#x3001;Elegant&amp;#x306B;&amp;#x3057;&amp;#x3066;&amp;#x304A;&amp;#x304D;&amp;#x307E;&amp;#x3057;&amp;#x3087;&amp;#x3046;&amp;#x3002;
  • Plone&amp;#x306E;METAL&amp;#x3068;&amp;#x9055;&amp;#x3063;&amp;#x3066;&amp;#x3001;HTML&amp;#x304C;&amp;#x58CA;&amp;#x308C;&amp;#x308B;&amp;#x30BF;&amp;#x30A4;&amp;#x30D7;&amp;#x306E;&amp;#x30C6;&amp;#x30F3;&amp;#x30D7;&amp;#x30EC;&amp;#x30FC;&amp;#x30C8;&amp;#x3067;&amp;#x3059;&amp;#x3002;
    Django&amp;#x30D7;&amp;#x30ED;&amp;#x30B8;&amp;#x30A7;&amp;#x30AF;&amp;#x30C8;&amp;#x306E;&amp;#x4EBA;&amp;#x3068;&amp;#x3057;&amp;#x3066;&amp;#x306F;&amp;#x3001;&amp;#x300C;&amp;#x30C7;&amp;#x30B6;&amp;#x30A4;&amp;#x30CA;&amp;#x30FC;&amp;#x3082;&amp;#x99AC;&amp;#x9E7F;&amp;#x306B;&amp;#x305B;&amp;#x305A;&amp;#x306B;&amp;#x3061;&amp;#x3087;&amp;#x3063;&amp;#x3068;&amp;#x6559;&amp;#x3048;&amp;#x308C;&amp;#x3070;&amp;#x3001;&amp;#x30B3;&amp;#x30FC;&amp;#x30C9;&amp;#x307E;&amp;#x3067;&amp;#x66F8;&amp;#x304D;&amp;#x51FA;&amp;#x3059;&amp;#x306F;&amp;#x305A;&amp;#x300D;&amp;#x3068;&amp;#x3044;&amp;#x3046;&amp;#x601D;&amp;#x60F3;&amp;#x3067;&amp;#x3001;&amp;#x4E8B;&amp;#x5B9F;&amp;#x5F7C;&amp;#x3089;&amp;#x306E;&amp;#x5468;&amp;#x308A;&amp;#x306E;&amp;#x30C7;&amp;#x30B6;&amp;#x30A4;&amp;#x30CA;&amp;#x30FC;&amp;#x306F;&amp;#x30C6;&amp;#x30F3;&amp;#x30D7;&amp;#x30EC;&amp;#x30FC;&amp;#x30C8;&amp;#x3092;&amp;#x4F7F;&amp;#x3044;&amp;#x3053;&amp;#x306A;&amp;#x3057;&amp;#x3066;&amp;#x3044;&amp;#x308B;&amp;#x3088;&amp;#x3046;&amp;#x3067;&amp;#x3059;&amp;#x3002;
    &amp;#x500B;&amp;#x4EBA;&amp;#x7684;&amp;#x306B;&amp;#x306F;&amp;#x300C;&amp;#x30C6;&amp;#x30F3;&amp;#x30D7;&amp;#x30EC;&amp;#x30FC;&amp;#x30C8;&amp;#x306E;&amp;#x7D99;&amp;#x627F;&amp;#x300D;&amp;#x3068;&amp;#x3044;&amp;#x3046;&amp;#x306E;&amp;#x306F;&amp;#x597D;&amp;#x304D;&amp;#x3067;&amp;#x306F;&amp;#x306A;&amp;#x3044;&amp;#x3093;&amp;#x3067;&amp;#x3059;&amp;#x304C;&amp;#x3001;&amp;#x4F3C;&amp;#x3066;&amp;#x3044;&amp;#x3066;&amp;#x5C11;&amp;#x3057;&amp;#x9055;&amp;#x3046;&amp;#x3068;&amp;#x8A00;&amp;#x3063;&amp;#x305F;&amp;#x30C6;&amp;#x30F3;&amp;#x30D7;&amp;#x30EC;&amp;#x30FC;&amp;#x30C8;&amp;#x306F;&amp;#x7D99;&amp;#x627F;&amp;#x3057;&amp;#x305F;&amp;#x65B9;&amp;#x304C;&amp;#x3044;&amp;#x3044;&amp;#x5834;&amp;#x9762;&amp;#x3082;&amp;#x3042;&amp;#x308B;&amp;#x3067;&amp;#x3057;&amp;#x3087;&amp;#x3046;&amp;#x3002;
  • &amp;#x30B5;&amp;#x30A4;&amp;#x30C8;&amp;#x5168;&amp;#x4F53;&amp;#x3092;&amp;#x30AD;&amp;#x30E3;&amp;#x30C3;&amp;#x30B7;&amp;#x30E5;&amp;#x3059;&amp;#x308B;&amp;#x8A2D;&amp;#x5B9A;&amp;#x306B;&amp;#x3059;&amp;#x308B;&amp;#x306E;&amp;#x306F;&amp;#x3001;settings.py&amp;#x306B;&amp;#xFF13;&amp;#x884C;&amp;#x8FFD;&amp;#x52A0;&amp;#x3059;&amp;#x308B;&amp;#x3060;&amp;#x3051;&amp;#x3067;&amp;#x3059;&amp;#x3002;
    &amp;#x30B3;&amp;#x30F3;&amp;#x30C8;&amp;#x30ED;&amp;#x30FC;&amp;#x30E9;&amp;#x306B;&amp;#x3059;&amp;#x3053;&amp;#x3057;&amp;#x30B3;&amp;#x30FC;&amp;#x30C9;&amp;#x3092;&amp;#x8FFD;&amp;#x52A0;&amp;#x3059;&amp;#x308C;&amp;#x3070;&amp;#x7D30;&amp;#x304B;&amp;#x304F;&amp;#x8A2D;&amp;#x5B9A;&amp;#x3059;&amp;#x308B;&amp;#x3053;&amp;#x3068;&amp;#x3082;&amp;#x51FA;&amp;#x6765;&amp;#x307E;&amp;#x3059;&amp;#x3002;
    URL&amp;#x306E;&amp;#x8A2D;&amp;#x8A08;&amp;#x304C;&amp;#x91CD;&amp;#x8981;&amp;#x306A;&amp;#x306E;&amp;#x306F;&amp;#x3001;GET/POST&amp;#x306E;&amp;#x30C7;&amp;#x30FC;&amp;#x30BF;&amp;#x304C;&amp;#x3042;&amp;#x308B;&amp;#x5834;&amp;#x5408;&amp;#x306B;&amp;#x306F;&amp;#x30AD;&amp;#x30E3;&amp;#x30C3;&amp;#x30B7;&amp;#x30E5;&amp;#x3092;&amp;#x5229;&amp;#x7528;&amp;#x3057;&amp;#x306A;&amp;#x3044;&amp;#x305F;&amp;#x3081;&amp;#x3002;ElegantURL&amp;#x306B;&amp;#x3057;&amp;#x306A;&amp;#x3044;&amp;#x3068;&amp;#x307B;&amp;#x3068;&amp;#x3093;&amp;#x3069;&amp;#x30AD;&amp;#x30E3;&amp;#x30C3;&amp;#x30B7;&amp;#x30E5;&amp;#x304C;&amp;#x52B9;&amp;#x304B;&amp;#x306A;&amp;#x3044;&amp;#x3067;&amp;#x3057;&amp;#x3087;&amp;#x3046;&amp;#x3002;&amp;#x4F1A;&amp;#x54E1;50&amp;#x4E07;&amp;#x4EBA;&amp;#x3001;&amp;#x5E38;&amp;#x6642;2&amp;#x4E07;&amp;#x30BB;&amp;#x30C3;&amp;#x30B7;&amp;#x30E7;&amp;#x30F3;&amp;#x3068;&amp;#x3044;&amp;#x3046;&amp;#x898F;&amp;#x6A21;&amp;#x306E;&amp;#x30DD;&amp;#x30FC;&amp;#x30E9;&amp;#x30F3;&amp;#x30C9;&amp;#xFF1F;&amp;#x306E;SNS&amp;#x3067;&amp;#x306F;tomcat&amp;#x30B5;&amp;#x30FC;&amp;#x30D0;&amp;#xFF14;&amp;#x53F0;&amp;#x304B;&amp;#x3089;Django&amp;#x30B5;&amp;#x30FC;&amp;#x30D0;&amp;#xFF11;&amp;#x53F0;&amp;#x306B;&amp;#x30EA;&amp;#x30D7;&amp;#x30EC;&amp;#x30FC;&amp;#x30B9;&amp;#x3057;&amp;#x305F;&amp;#x3068;&amp;#x3044;&amp;#x3046;&amp;#x3053;&amp;#x3068;&amp;#x3067;&amp;#x3059;&amp;#x3002;
  • &amp;#x30AD;&amp;#x30E3;&amp;#x30C3;&amp;#x30B7;&amp;#x30E5;&amp;#x306F;locmem&amp;#x306E;&amp;#x4ED6;&amp;#x306B;&amp;#x3082;&amp;#x3001;memcach&amp;#x3084;db,file&amp;#x304C;&amp;#x3042;&amp;#x308A;&amp;#x307E;&amp;#x3059;&amp;#x3002;
    memcash&amp;#x306F;&amp;#x672C;&amp;#x5BB6;&amp;#x30B9;&amp;#x30E9;&amp;#x30C9;&amp;#x3082;&amp;#x4F7F;&amp;#x7528;&amp;#x3057;&amp;#x3066;&amp;#x3044;&amp;#x308B;&amp;#x6A21;&amp;#x69D8;&amp;#x3067;&amp;#x3059;&amp;#x3002;&amp;#x30B9;&amp;#x30BF;&amp;#x30C6;&amp;#x30A3;&amp;#x30C3;&amp;#x30AF;&amp;#x30D5;&amp;#x30A1;&amp;#x30A4;&amp;#x30EB;&amp;#x306E;&amp;#x66F8;&amp;#x304D;&amp;#x51FA;&amp;#x3057;&amp;#x3068;&amp;#x304B;memcash&amp;#x3092;&amp;#x4F7F;&amp;#x3046;&amp;#x3088;&amp;#x3046;&amp;#x306A;&amp;#x72EC;&amp;#x81EA;&amp;#x5B9F;&amp;#x88C5;&amp;#x3068;&amp;#x304B;&amp;#x304C;&amp;#x5FC5;&amp;#x8981;&amp;#x306A;&amp;#x304F;&amp;#x3001;&amp;#x30D3;&amp;#x30E5;&amp;#x30FC;&amp;#x6BCE;&amp;#x306B;&amp;#x30AD;&amp;#x30E3;&amp;#x30C3;&amp;#x30B7;&amp;#x30E5;&amp;#x3059;&amp;#x308B;&amp;#x304B;&amp;#x3069;&amp;#x3046;&amp;#x304B;&amp;#x306E;&amp;#x5236;&amp;#x5FA1;&amp;#x3092;&amp;#x3059;&amp;#x308B;&amp;#x5834;&amp;#x5408;&amp;#x3082;&amp;#x5404;&amp;#x30D3;&amp;#x30E5;&amp;#x30FC;&amp;#x306B;&amp;#xFF11;&amp;#x30FB;&amp;#xFF12;&amp;#x884C;&amp;#x8A18;&amp;#x8FF0;&amp;#x3059;&amp;#x308B;&amp;#x3060;&amp;#x3051;&amp;#x306A;&amp;#x306E;&amp;#x3067;&amp;#x3001;&amp;#x958B;&amp;#x767A;&amp;#x306F;&amp;#x975E;&amp;#x5E38;&amp;#x306B;&amp;#x697D;&amp;#x3060;&amp;#x3068;&amp;#x304A;&amp;#x3082;&amp;#x3044;&amp;#x307E;&amp;#x3059;&amp;#x3002;&amp;#x5B9F;&amp;#x969B;&amp;#x306F;&amp;#x3044;&amp;#x308D;&amp;#x3044;&amp;#x308D;&amp;#x3068;URL&amp;#x7B49;&amp;#x306E;&amp;#x8A2D;&amp;#x8A08;&amp;#x304C;&amp;#x5FC5;&amp;#x8981;&amp;#x3067;&amp;#x3057;&amp;#x3087;&amp;#x3046;&amp;#x304C;&amp;#x3002;
  • python&amp;#x306E;&amp;#x4EBA;&amp;#x306B;&amp;#x306F;&amp;#x898B;&amp;#x6163;&amp;#x308C;&amp;#x3066;&amp;#x3044;&amp;#x308B;&amp;#x3067;&amp;#x3042;&amp;#x308D;&amp;#x3046;&amp;#x3001;po&amp;#x3092;&amp;#x4F7F;&amp;#x3044;&amp;#x307E;&amp;#x3059;&amp;#x3002;
    &amp;#x56FD;&amp;#x969B;&amp;#x5316;&amp;#x7528;&amp;#x306E;&amp;#x30B3;&amp;#x30FC;&amp;#x30C9;&amp;#x306E;&amp;#x8A18;&amp;#x8FF0;&amp;#x306F;&amp;#x7C21;&amp;#x5358;&amp;#x3067;&amp;#x3059;&amp;#x3002;
    po&amp;#x3001;mo&amp;#x306F;&amp;#x3053;&amp;#x3093;&amp;#x306A;&amp;#x611F;&amp;#x3058;&amp;#x306B;&amp;#x4F5C;&amp;#x308A;&amp;#x307E;&amp;#x3059;&amp;#x3002;getText&amp;#x3068;&amp;#x3044;&amp;#x3046;&amp;#x30E9;&amp;#x30A4;&amp;#x30D6;&amp;#x30E9;&amp;#x30EA;&amp;#x304C;&amp;#x5FC5;&amp;#x8981;&amp;#x306A;&amp;#x306E;&amp;#x3067;&amp;#x3001;&amp;#x30A6;&amp;#x30A3;&amp;#x30F3;&amp;#x30C9;&amp;#x30A6;&amp;#x30BA;&amp;#x3067;&amp;#x306F;&amp;#x9762;&amp;#x5012;&amp;#x304B;&amp;#x3082;&amp;#x3057;&amp;#x308C;&amp;#x306A;&amp;#x3044;&amp;#x3002;&amp;#x30B3;&amp;#x30FC;&amp;#x30C9;&amp;#x66F8;&amp;#x304D;&amp;#x3084;&amp;#x52D5;&amp;#x4F5C;&amp;#x306B;&amp;#x306F;&amp;#x5FC5;&amp;#x8981;&amp;#x306A;&amp;#x3044;&amp;#x306E;&amp;#x3067;&amp;#x3001;&amp;#x307E;&amp;#x3068;&amp;#x3081;&amp;#x3066;xUnix&amp;#x7CFB;&amp;#x306E;OS&amp;#x3067;&amp;#x3084;&amp;#x3063;&amp;#x305F;&amp;#x65B9;&amp;#x304C;&amp;#x697D;&amp;#x3002;OSX&amp;#x3055;&amp;#x3044;&amp;#x3053;&amp;#x30FC;&amp;#x3002;
    plone&amp;#x3068;&amp;#x304B;&amp;#x306E;&amp;#x3088;&amp;#x3046;&amp;#x306B;accept-language&amp;#x3067;&amp;#x8A00;&amp;#x8A9E;&amp;#x3092;&amp;#x5207;&amp;#x308A;&amp;#x66FF;&amp;#x3048;&amp;#x305F;&amp;#x308A;&amp;#x3001;session&amp;#x3084;cookie&amp;#x306E;&amp;#x7279;&amp;#x5B9A;&amp;#x306E;&amp;#x5024;&amp;#x3092;&amp;#x3082;&amp;#x306E;&amp;#x306B;&amp;#x8A00;&amp;#x8A9E;&amp;#x3092;&amp;#x5207;&amp;#x308A;&amp;#x66FF;&amp;#x3048;&amp;#x305F;&amp;#x308A;&amp;#x51FA;&amp;#x6765;&amp;#x307E;&amp;#x3059;&amp;#x3002;
  • &amp;#x3053;&amp;#x3053;&amp;#x307E;&amp;#x3067;&amp;#x3067;&amp;#x3001;Django&amp;#x306B;&amp;#x8208;&amp;#x5473;&amp;#x304C;&amp;#x308F;&amp;#x3044;&amp;#x305F;&amp;#x306F;&amp;#x305A;&amp;#x306A;&amp;#x306E;&amp;#x3067;&amp;#x3001;&amp;#x5B9F;&amp;#x969B;&amp;#x7684;&amp;#x306A;&amp;#x8A71;&amp;#x306B;&amp;#x3046;&amp;#x3064;&amp;#x308A;&amp;#x307E;&amp;#x3059;&amp;#x3002;
    mod_python&amp;#x306E;3.x&amp;#x304C;&amp;#x5FC5;&amp;#x8981;&amp;#x306A;&amp;#x306E;&amp;#x3067;&amp;#x3001;apache&amp;#x306E;&amp;#x30D0;&amp;#x30FC;&amp;#x30B8;&amp;#x30E7;&amp;#x30F3;&amp;#x3082;2.x&amp;#x3067;&amp;#x3059;&amp;#x3002;
    lighttpd&amp;#x3068;fast-cgi&amp;#x3068;&amp;#x3044;&amp;#x3046;&amp;#x624B;&amp;#x3082;&amp;#x3042;&amp;#x308A;&amp;#x307E;&amp;#x3059;&amp;#x3002;
    &amp;#x5BFE;&amp;#x5FDC;&amp;#x30C7;&amp;#x30FC;&amp;#x30BF;&amp;#x30D9;&amp;#x30FC;&amp;#x30B9;&amp;#x306E;&amp;#x3001;SQLServer&amp;#x306F;&amp;#x73FE;&amp;#x6642;&amp;#x70B9;&amp;#x3067;&amp;#x306F;ADO_MS_SQLServer&amp;#x9650;&amp;#x5B9A;&amp;#x3067;&amp;#x3059;&amp;#x3002;&amp;#x3088;&amp;#x304F;&amp;#x610F;&amp;#x5473;&amp;#x306F;&amp;#x308F;&amp;#x304B;&amp;#x308A;&amp;#x307E;&amp;#x305B;&amp;#x3093;&amp;#x304C;&amp;#x3001;&amp;#x9650;&amp;#x5B9A;&amp;#x3067;&amp;#x3059;&amp;#x3002;
    Oracle&amp;#x306B;&amp;#x95A2;&amp;#x3057;&amp;#x3066;&amp;#x306F;&amp;#x4EE5;&amp;#x524D;&amp;#x30D1;&amp;#x30C3;&amp;#x30C1;&amp;#x3092;&amp;#x898B;&amp;#x304B;&amp;#x3051;&amp;#x307E;&amp;#x3057;&amp;#x305F;&amp;#x304C;&amp;#x3001;&amp;#x4F7F;&amp;#x3048;&amp;#x308B;&amp;#x304B;&amp;#x3069;&amp;#x3046;&amp;#x304B;&amp;#x306F;&amp;#x4E0D;&amp;#x660E;&amp;#x3067;&amp;#x3059;&amp;#x3002;
  • &amp;#x5B9F;&amp;#x969B;&amp;#x306E;&amp;#x958B;&amp;#x767A;&amp;#x306F;&amp;#x3001;&amp;#x30D7;&amp;#x30ED;&amp;#x30B8;&amp;#x30A7;&amp;#x30AF;&amp;#x30C8;&amp;#x306E;&amp;#x958B;&amp;#x59CB;&amp;#x304B;&amp;#x3089;&amp;#x3057;&amp;#x306A;&amp;#x3051;&amp;#x308C;&amp;#x3070;&amp;#x3044;&amp;#x3051;&amp;#x306A;&amp;#x3044;&amp;#x3053;&amp;#x3068;&amp;#x304C;&amp;#x6C7A;&amp;#x307E;&amp;#x3063;&amp;#x3066;&amp;#x3044;&amp;#x307E;&amp;#x3059;&amp;#x3002;
    &amp;#x30D5;&amp;#x30EC;&amp;#x30FC;&amp;#x30E0;&amp;#x30EF;&amp;#x30FC;&amp;#x30AF;&amp;#x3067;&amp;#x3059;&amp;#x304B;&amp;#x3089;&amp;#x3002;
  • &amp;#x4E00;&amp;#x3064;&amp;#x306E;&amp;#x30C7;&amp;#x30FC;&amp;#x30BF;&amp;#x30D9;&amp;#x30FC;&amp;#x30B9;&amp;#x306B;&amp;#x5BFE;&amp;#x3057;&amp;#x3066;&amp;#x3001;&amp;#x4E00;&amp;#x3064;&amp;#x306E;Django-Core&amp;#x30C7;&amp;#x30FC;&amp;#x30BF;&amp;#x30D9;&amp;#x30FC;&amp;#x30B9;&amp;#x304C;&amp;#x5FC5;&amp;#x8981;&amp;#x3067;&amp;#x3059;&amp;#x3002;&amp;#x305D;&amp;#x308C;&amp;#x3092;&amp;#x7528;&amp;#x610F;&amp;#x3059;&amp;#x308B;&amp;#x305F;&amp;#x3081;&amp;#x306B;&amp;#x306F;&amp;#x3001;&amp;#x30D7;&amp;#x30ED;&amp;#x30B8;&amp;#x30A7;&amp;#x30AF;&amp;#x30C8;&amp;#x3092;&amp;#x958B;&amp;#x59CB;&amp;#x3057;&amp;#x3066;&amp;#x30C7;&amp;#x30FC;&amp;#x30BF;&amp;#x30D9;&amp;#x30FC;&amp;#x30B9;&amp;#x306E;&amp;#x8A2D;&amp;#x5B9A;&amp;#x3092;&amp;#x3059;&amp;#x308B;&amp;#x5FC5;&amp;#x8981;&amp;#x304C;&amp;#x3042;&amp;#x308A;&amp;#x307E;&amp;#x3059;&amp;#x3002;&amp;#x9806;&amp;#x756A;&amp;#x304C;&amp;#x3061;&amp;#x3087;&amp;#x3063;&amp;#x3068;&amp;#x6C17;&amp;#x6301;&amp;#x3061;&amp;#x60AA;&amp;#x3044;&amp;#x3067;&amp;#x3059;&amp;#x3002;
    &amp;#x4E00;&amp;#x5EA6;&amp;#x30D7;&amp;#x30ED;&amp;#x30B8;&amp;#x30A7;&amp;#x30AF;&amp;#x30C8;&amp;#x3092;&amp;#x958B;&amp;#x59CB;&amp;#x3057;&amp;#x3066;&amp;#x3057;&amp;#x307E;&amp;#x3048;&amp;#x3070;&amp;#x3001;&amp;#x540C;&amp;#x3058;&amp;#x30C7;&amp;#x30FC;&amp;#x30BF;&amp;#x30D9;&amp;#x30FC;&amp;#x30B9;&amp;#x60C5;&amp;#x5831;&amp;#x3092;&amp;#x5229;&amp;#x7528;&amp;#x3059;&amp;#x308B;&amp;#x30D7;&amp;#x30ED;&amp;#x30B8;&amp;#x30A7;&amp;#x30AF;&amp;#x30C8;&amp;#x3084;&amp;#x3001;&amp;#x305D;&amp;#x306E;&amp;#x30D7;&amp;#x30ED;&amp;#x30B8;&amp;#x30A7;&amp;#x30AF;&amp;#x30C8;&amp;#x306F;&amp;#x4EE5;&amp;#x4E0B;&amp;#x306E;&amp;#x30A2;&amp;#x30D7;&amp;#x30EA;&amp;#x30B1;&amp;#x30FC;&amp;#x30B7;&amp;#x30E7;&amp;#x30F3;&amp;#x306F;&amp;#x540C;&amp;#x4E00;Django-Core&amp;#x30C7;&amp;#x30FC;&amp;#x30BF;&amp;#x30D9;&amp;#x30FC;&amp;#x30B9;&amp;#x3092;&amp;#x5229;&amp;#x7528;&amp;#x3067;&amp;#x304D;&amp;#x308B;&amp;#x3002;
  • &amp;#x3068;&amp;#x3070;&amp;#x3059;&amp;#x3002;&amp;#x5909;&amp;#x308F;&amp;#x3063;&amp;#x3066;&amp;#x3044;&amp;#x308B;&amp;#x306E;&amp;#x306F;&amp;#x3001;&amp;#x307E;&amp;#x305A;Project&amp;#x306E;&amp;#x30A4;&amp;#x30CB;&amp;#x30B7;&amp;#x30E3;&amp;#x30E9;&amp;#x30A4;&amp;#x30BA;&amp;#x3092;&amp;#x3059;&amp;#x308B;&amp;#x3068;&amp;#x3044;&amp;#x3046;&amp;#x6240;&amp;#x3002;
    &amp;#x30C7;&amp;#x30FC;&amp;#x30BF;&amp;#x30D9;&amp;#x30FC;&amp;#x30B9;&amp;#x306E;&amp;#x60C5;&amp;#x5831;&amp;#x304C;&amp;#x5FC5;&amp;#x8981;&amp;#x306A;&amp;#x306E;&amp;#x3067;&amp;#x3001;init&amp;#x3088;&amp;#x308A;&amp;#x3082;startproject&amp;#x304C;&amp;#x5148;&amp;#x306A;&amp;#x306E;&amp;#x304C;&amp;#x3061;&amp;#x3087;&amp;#x3063;&amp;#x3068;&amp;#x30A4;&amp;#x30E1;&amp;#x30FC;&amp;#x30B8;&amp;#x308F;&amp;#x304D;&amp;#x306B;&amp;#x304F;&amp;#x3044;&amp;#x3068;&amp;#x3053;&amp;#x308D;&amp;#x3067;&amp;#x3059;&amp;#x3002;
    &amp;#x4E00;&amp;#x3064;&amp;#x306E;&amp;#x30D7;&amp;#x30ED;&amp;#x30B8;&amp;#x30A7;&amp;#x30AF;&amp;#x30C8;&amp;#x3067;&amp;#x8907;&amp;#x6570;&amp;#x306E;&amp;#x30A2;&amp;#x30D7;&amp;#x30EA;&amp;#x30B1;&amp;#x30FC;&amp;#x30B7;&amp;#x30E7;&amp;#x30F3;&amp;#x3092;&amp;#x4F5C;&amp;#x308B;&amp;#x5834;&amp;#x5408;&amp;#x306F;&amp;#x3001;startapp&amp;#x304B;&amp;#x3089;&amp;#x3092;&amp;#x7E70;&amp;#x308A;&amp;#x8FD4;&amp;#x3059;&amp;#x3053;&amp;#x3068;&amp;#x306B;&amp;#x306A;&amp;#x308A;&amp;#x307E;&amp;#x3059;&amp;#x3002;
    manage.py&amp;#x3068;&amp;#x3044;&amp;#x3046;&amp;#x30B9;&amp;#x30AF;&amp;#x30EA;&amp;#x30D7;&amp;#x30C8;&amp;#x306F;&amp;#x3001;django-admin.py&amp;#x3068;settings&amp;#x30AA;&amp;#x30D7;&amp;#x30B7;&amp;#x30E7;&amp;#x30F3;&amp;#x306E;&amp;#x30E9;&amp;#x30C3;&amp;#x30D1;&amp;#x30FC;&amp;#x3067;&amp;#x3059;&amp;#x3002;startproject&amp;#x4EE5;&amp;#x5916;&amp;#x3067;&amp;#x3082;django-admin.py&amp;#x306F;&amp;#x5229;&amp;#x7528;&amp;#x53EF;&amp;#x80FD;&amp;#x3067;&amp;#x3059;&amp;#x3002;
  • django-admin.py&amp;#x3068;&amp;#x3044;&amp;#x3046;&amp;#x306E;&amp;#x306F;&amp;#x3001;Django&amp;#x306E;&amp;#x64CD;&amp;#x4F5C;&amp;#x30B9;&amp;#x30AF;&amp;#x30EA;&amp;#x30D7;&amp;#x30C8;&amp;#x3067;&amp;#x3059;&amp;#x3002;Django&amp;#x306B;&amp;#x542B;&amp;#x307E;&amp;#x308C;&amp;#x307E;&amp;#x3059;&amp;#x3002;
    &amp;#x3053;&amp;#x306E;&amp;#x64CD;&amp;#x4F5C;&amp;#x3067;&amp;#x306F;&amp;#x30AB;&amp;#x30EC;&amp;#x30F3;&amp;#x30C8;&amp;#x30C7;&amp;#x30A3;&amp;#x30EC;&amp;#x30AF;&amp;#x30C8;&amp;#x30EA;&amp;#x306B;&amp;#x30D7;&amp;#x30ED;&amp;#x30B8;&amp;#x30A7;&amp;#x30AF;&amp;#x30C8;&amp;#x7528;&amp;#x306E;&amp;#x30C7;&amp;#x30A3;&amp;#x30EC;&amp;#x30AF;&amp;#x30C8;&amp;#x30EA;&amp;#x304C;&amp;#x4F5C;&amp;#x6210;&amp;#x3055;&amp;#x308C;&amp;#x307E;&amp;#x3059;&amp;#x3002;
    &amp;#x30D7;&amp;#x30ED;&amp;#x30B8;&amp;#x30A7;&amp;#x30AF;&amp;#x30C8;&amp;#x30C7;&amp;#x30A3;&amp;#x30EC;&amp;#x30AF;&amp;#x30C8;&amp;#x30EA;&amp;#x306E;&amp;#x76F4;&amp;#x4E0B;&amp;#x306B;settings.py&amp;#x3068;&amp;#x3044;&amp;#x3046;&amp;#x30D5;&amp;#x30A1;&amp;#x30A4;&amp;#x30EB;&amp;#x304C;&amp;#x751F;&amp;#x6210;&amp;#x3055;&amp;#x308C;&amp;#x3066;&amp;#x3044;&amp;#x307E;&amp;#x3059;&amp;#x304C;&amp;#x3001;&amp;#x3053;&amp;#x308C;&amp;#x306F;&amp;#x30D7;&amp;#x30ED;&amp;#x30B8;&amp;#x30A7;&amp;#x30AF;&amp;#x30C8;&amp;#x306E;&amp;#x8A2D;&amp;#x5B9A;&amp;#x3092;&amp;#x8A18;&amp;#x8FF0;&amp;#x3059;&amp;#x308B;&amp;#x30D5;&amp;#x30A1;&amp;#x30A4;&amp;#x30EB;&amp;#x3067;&amp;#x3059;&amp;#x3002;
    manage.py&amp;#x3068;&amp;#x3044;&amp;#x3046;&amp;#x306E;&amp;#x306F;django-admin.py&amp;#x306E;&amp;#x30E9;&amp;#x30C3;&amp;#x30D1;&amp;#x30FC;&amp;#x3067;&amp;#x3059;&amp;#x3002;&amp;#x30D7;&amp;#x30ED;&amp;#x30B8;&amp;#x30A7;&amp;#x30AF;&amp;#x30C8;&amp;#x306E;&amp;#x4F5C;&amp;#x6210;&amp;#x4EE5;&amp;#x964D;&amp;#x306F;&amp;#x30E9;&amp;#x30C3;&amp;#x30D1;&amp;#x3092;&amp;#x4F7F;&amp;#x3063;&amp;#x305F;&amp;#x65B9;&amp;#x304C;&amp;#x4FBF;&amp;#x5229;&amp;#x3067;&amp;#x3059;&amp;#x3002;
  • &amp;#x307E;&amp;#x305A;settings.py&amp;#x3092;&amp;#x7DE8;&amp;#x96C6;&amp;#x3057;&amp;#x307E;&amp;#x3059;&amp;#x3002;
    &amp;#x73FE;&amp;#x30D0;&amp;#x30FC;&amp;#x30B8;&amp;#x30E7;&amp;#x30F3;&amp;#x3067;&amp;#x306F;&amp;#x30D7;&amp;#x30ED;&amp;#x30B8;&amp;#x30A7;&amp;#x30AF;&amp;#x30C8;&amp;#x6BCE;&amp;#x306B;&amp;#x4E00;&amp;#x3064;&amp;#x306E;&amp;#x30C7;&amp;#x30FC;&amp;#x30BF;&amp;#x30D9;&amp;#x30FC;&amp;#x30B9;&amp;#x3057;&amp;#x304B;&amp;#x4F7F;&amp;#x7528;&amp;#x3067;&amp;#x304D;&amp;#x307E;&amp;#x305B;&amp;#x3093;&amp;#x3002;
    settings.py&amp;#x306B;&amp;#x306F;&amp;#x4ED6;&amp;#x306B;&amp;#x3082;&amp;#x3044;&amp;#x308D;&amp;#x3044;&amp;#x308D;&amp;#x306A;&amp;#x8A2D;&amp;#x5B9A;&amp;#x304C;&amp;#x3042;&amp;#x308A;&amp;#x307E;&amp;#x3059;&amp;#x304C;&amp;#x3001;&amp;#x306F;&amp;#x3057;&amp;#x3087;&amp;#x308A;&amp;#x307E;&amp;#x3059;&amp;#x3002;
    &amp;#x30B3;&amp;#x30E1;&amp;#x30F3;&amp;#x30C8;&amp;#x3092;&amp;#x8AAD;&amp;#x3081;&amp;#x3070;&amp;#x5927;&amp;#x62B5;&amp;#x308F;&amp;#x304B;&amp;#x308A;&amp;#x307E;&amp;#x3059;&amp;#x3002;
  • &amp;#x81EA;&amp;#x52D5;&amp;#x7BA1;&amp;#x7406;&amp;#x30A4;&amp;#x30F3;&amp;#x30BF;&amp;#x30FC;&amp;#x30D5;&amp;#x30A7;&amp;#x30FC;&amp;#x30B9;&amp;#x3067;&amp;#x4F7F;&amp;#x7528;&amp;#x3059;&amp;#x308B;&amp;#x30C6;&amp;#x30FC;&amp;#x30D6;&amp;#x30EB;&amp;#x3084;&amp;#x3001;&amp;#x30A2;&amp;#x30D7;&amp;#x30EA;&amp;#x30B1;&amp;#x30FC;&amp;#x30B7;&amp;#x30E7;&amp;#x30F3;&amp;#x3067;&amp;#x4F7F;&amp;#x7528;&amp;#x3059;&amp;#x308B;&amp;#x60C5;&amp;#x5831;&amp;#x3082;&amp;#x683C;&amp;#x7D0D;&amp;#x3055;&amp;#x308C;&amp;#x307E;&amp;#x3059;&amp;#x3002;
    &amp;#x30C7;&amp;#x30FC;&amp;#x30BF;&amp;#x30D9;&amp;#x30FC;&amp;#x30B9;&amp;#x81EA;&amp;#x4F53;&amp;#x3084;&amp;#x63A5;&amp;#x7D9A;&amp;#x30E6;&amp;#x30FC;&amp;#x30B6;&amp;#x306F;&amp;#x4F5C;&amp;#x6210;&amp;#x3055;&amp;#x308C;&amp;#x307E;&amp;#x305B;&amp;#x3093;&amp;#x306E;&amp;#x3067;&amp;#x3001;&amp;#x4F7F;&amp;#x7528;&amp;#x3059;&amp;#x308B;&amp;#x30C7;&amp;#x30FC;&amp;#x30BF;&amp;#x30D9;&amp;#x30FC;&amp;#x30B9;&amp;#x3068;&amp;#x63A5;&amp;#x7D9A;&amp;#x30E6;&amp;#x30FC;&amp;#x30B6;&amp;#x306F;&amp;#x4E8B;&amp;#x524D;&amp;#x306B;&amp;#x4F5C;&amp;#x6210;&amp;#x3057;&amp;#x3066;&amp;#x304A;&amp;#x304F;&amp;#x5FC5;&amp;#x8981;&amp;#x304C;&amp;#x3042;&amp;#x308A;&amp;#x307E;&amp;#x3059;&amp;#x3002;
  • &amp;#x30A2;&amp;#x30D7;&amp;#x30EA;&amp;#x30B1;&amp;#x30FC;&amp;#x30B7;&amp;#x30E7;&amp;#x30F3;&amp;#x3092;&amp;#x958B;&amp;#x59CB;&amp;#x3059;&amp;#x308B;&amp;#x306B;&amp;#x306F;&amp;#x3001;manage.py&amp;#x3092;&amp;#x4F7F;&amp;#x7528;&amp;#x3057;&amp;#x3066;startproject&amp;#x3057;&amp;#x307E;&amp;#x3059;&amp;#x3002;
    &amp;#x30D7;&amp;#x30ED;&amp;#x30B8;&amp;#x30A7;&amp;#x30AF;&amp;#x30C8;&amp;#x306B;&amp;#x30A2;&amp;#x30D7;&amp;#x30EA;&amp;#x30B1;&amp;#x30FC;&amp;#x30B7;&amp;#x30E7;&amp;#x30F3;&amp;#x304C;&amp;#x4E00;&amp;#x3064;&amp;#x306E;&amp;#x5834;&amp;#x5408;&amp;#x306F;&amp;#x3001;&amp;#x306A;&amp;#x3093;&amp;#x3060;&amp;#x304B;&amp;#x9593;&amp;#x629C;&amp;#x3051;&amp;#x306B;&amp;#x306A;&amp;#x3063;&amp;#x3066;&amp;#x3057;&amp;#x307E;&amp;#x3044;&amp;#x307E;&amp;#x3059;&amp;#x3002;
    WorkStyle&amp;#x304C;&amp;#x30D7;&amp;#x30ED;&amp;#x30B8;&amp;#x30A7;&amp;#x30AF;&amp;#x30C8;&amp;#x306E;&amp;#x4E00;&amp;#x90E8;&amp;#x3067;&amp;#x6216;&amp;#x308B;&amp;#x5834;&amp;#x5408;&amp;#x306A;&amp;#x3093;&amp;#x304B;&amp;#x306F;&amp;#x3057;&amp;#x3063;&amp;#x304F;&amp;#x308A;&amp;#x304F;&amp;#x308B;&amp;#x3068;&amp;#x601D;&amp;#x3044;&amp;#x307E;&amp;#x3059;&amp;#x304C;&amp;#x3002;
  • DRY&amp;#x306E;&amp;#x539F;&amp;#x5247;&amp;#x304C;&amp;#x3042;&amp;#x308B;&amp;#x306E;&amp;#x3067;&amp;#x3001;&amp;#x7D50;&amp;#x69CB;&amp;#x7D30;&amp;#x304B;&amp;#x3044;Model&amp;#x306B;&amp;#x306A;&amp;#x308A;&amp;#x307E;&amp;#x3059;&amp;#x3002;
    class META&amp;#x3068;&amp;#x3044;&amp;#x3046;&amp;#x90E8;&amp;#x5206;&amp;#x306B;&amp;#x306F;&amp;#x3044;&amp;#x308D;&amp;#x3044;&amp;#x308D;&amp;#x8A18;&amp;#x8FF0;&amp;#x3059;&amp;#x308B;&amp;#x3053;&amp;#x3068;&amp;#x304C;&amp;#x51FA;&amp;#x6765;&amp;#x307E;&amp;#x3059;&amp;#xFF08;db&amp;#x306E;&amp;#x8A2D;&amp;#x5B9A;&amp;#x3068;&amp;#x95A2;&amp;#x4FC2;&amp;#x306E;&amp;#x306A;&amp;#x3044;&amp;#x30D0;&amp;#x30EA;&amp;#x30C7;&amp;#x30FC;&amp;#x30BF;&amp;#x3068;&amp;#x304B;&amp;#xFF09;&amp;#x3002;
    TurboGears&amp;#x3068;&amp;#x304B;&amp;#x898B;&amp;#x305F;&amp;#x3053;&amp;#x3068;&amp;#x3042;&amp;#x308B;&amp;#x4EBA;&amp;#x306F;&amp;#x4F3C;&amp;#x3066;&amp;#x308B;&amp;#x3068;&amp;#x611F;&amp;#x3058;&amp;#x308B;&amp;#x3067;&amp;#x3057;&amp;#x3087;&amp;#x3046;&amp;#x3002;
    PK&amp;#x306F;&amp;#x81EA;&amp;#x52D5;&amp;#x7684;&amp;#x306B;id&amp;#x3068;&amp;#x3044;&amp;#x3046;&amp;#x5909;&amp;#x6570;&amp;#x540D;&amp;#x3067;&amp;#x751F;&amp;#x6210;&amp;#x3055;&amp;#x308C;&amp;#x307E;&amp;#x3059;&amp;#x3002;
    DRY&amp;#x306F;&amp;#x539F;&amp;#x5247;&amp;#x306A;&amp;#x306E;&amp;#x3067;&amp;#x3001;&amp;#x30C6;&amp;#x30FC;&amp;#x30D6;&amp;#x30EB;&amp;#x3084;&amp;#x30AB;&amp;#x30E9;&amp;#x30E0;&amp;#x306E;&amp;#x540D;&amp;#x524D;&amp;#x3068;&amp;#x306E;&amp;#x5BFE;&amp;#x5FDC;&amp;#x306F;&amp;#x5909;&amp;#x66F4;&amp;#x3059;&amp;#x308B;&amp;#x3053;&amp;#x3068;&amp;#x3082;&amp;#x51FA;&amp;#x6765;&amp;#x307E;&amp;#x3059;&amp;#x3002;
  • &amp;#x30A4;&amp;#x30F3;&amp;#x30B9;&amp;#x30C8;&amp;#x30FC;&amp;#x30EB;&amp;#x3092;&amp;#x884C;&amp;#x3046;&amp;#x3068;&amp;#x3001;&amp;#x30C7;&amp;#x30FC;&amp;#x30BF;&amp;#x30D9;&amp;#x30FC;&amp;#x30B9;&amp;#x306B;Model&amp;#x3067;&amp;#x5B9A;&amp;#x7FA9;&amp;#x3057;&amp;#x305F;&amp;#x30C6;&amp;#x30FC;&amp;#x30D6;&amp;#x30EB;&amp;#x304C;&amp;#x4F5C;&amp;#x6210;&amp;#x3055;&amp;#x308C;&amp;#x307E;&amp;#x3059;&amp;#x3002;
    &amp;#x540C;&amp;#x6642;&amp;#x306B;&amp;#x3001;&amp;#x30A2;&amp;#x30D7;&amp;#x30EA;&amp;#x30B1;&amp;#x30FC;&amp;#x30B7;&amp;#x30E7;&amp;#x30F3;&amp;#x60C5;&amp;#x5831;&amp;#x304C;Django&amp;#x30B3;&amp;#x30A2;&amp;#x30C6;&amp;#x30FC;&amp;#x30D6;&amp;#x30EB;&amp;#x306B;&amp;#x767B;&amp;#x9332;&amp;#x3055;&amp;#x308C;&amp;#x307E;&amp;#x3059;&amp;#x3002;
    Index&amp;#x306F;&amp;#x81EA;&amp;#x52D5;&amp;#x3067;&amp;#x306F;&amp;#x767B;&amp;#x9332;&amp;#x3055;&amp;#x308C;&amp;#x306A;&amp;#x3044;&amp;#x306E;&amp;#x3067;&amp;#x3001;sqlindexes&amp;#x3092;&amp;#x5F15;&amp;#x6570;&amp;#x306B;&amp;#x4E0E;&amp;#x3048;&amp;#x3066;sql&amp;#x3092;&amp;#x51FA;&amp;#x529B;&amp;#x3055;&amp;#x305B;&amp;#x3066;&amp;#x3001;&amp;#x624B;&amp;#x52D5;&amp;#x3067;&amp;#x5B9F;&amp;#x884C;&amp;#x3002;
    &amp;#x30C6;&amp;#x30FC;&amp;#x30D6;&amp;#x30EB;&amp;#x540D;&amp;#x306F;&amp;#x30A2;&amp;#x30D7;&amp;#x30EA;&amp;#x30B1;&amp;#x30FC;&amp;#x30B7;&amp;#x30E7;&amp;#x30F3;&amp;#x540D;&amp;#x3068;Model&amp;#x540D;&amp;#xFF08;&amp;#x8907;&amp;#x6570;&amp;#x5F62;&amp;#xFF09;&amp;#x3067;&amp;#x4F5C;&amp;#x6210;&amp;#x3055;&amp;#x308C;&amp;#x308B;&amp;#x3002;
  • &amp;#x3053;&amp;#x3053;&amp;#x307E;&amp;#x3067;&amp;#x3067;&amp;#x3001;O/R&amp;#x304C;&amp;#x4F7F;&amp;#x7528;&amp;#x53EF;&amp;#x80FD;&amp;#x306B;&amp;#x306A;&amp;#x3063;&amp;#x3066;&amp;#x3044;&amp;#x307E;&amp;#x3059;&amp;#x306E;&amp;#x3067;&amp;#x3001;Python&amp;#x30B9;&amp;#x30AF;&amp;#x30EA;&amp;#x30D7;&amp;#x30C8;&amp;#x304B;&amp;#x3089;&amp;#x4F7F;&amp;#x3063;&amp;#x3066;&amp;#x307F;&amp;#x307E;&amp;#x3059;&amp;#x3002;
    DJANGO_SETTINGS_MODULE&amp;#x3068;&amp;#x3044;&amp;#x3046;&amp;#x74B0;&amp;#x5883;&amp;#x5909;&amp;#x6570;&amp;#x3092;&amp;#x30BB;&amp;#x30C3;&amp;#x30C8;&amp;#x3057;&amp;#x3066;&amp;#x304A;&amp;#x304F;&amp;#x5FC5;&amp;#x8981;&amp;#x304C;&amp;#x3042;&amp;#x308A;&amp;#x307E;&amp;#x3059;&amp;#x3002;

  • urls.py&amp;#x306F;&amp;#x30A2;&amp;#x30D7;&amp;#x30EA;&amp;#x30B1;&amp;#x30FC;&amp;#x30B7;&amp;#x30E7;&amp;#x30F3;&amp;#x6BCE;&amp;#x306B;&amp;#x5206;&amp;#x3051;&amp;#x305F;&amp;#x3044;&amp;#x306E;&amp;#x3067;&amp;#x3001;&amp;#x30D7;&amp;#x30ED;&amp;#x30B8;&amp;#x30A7;&amp;#x30AF;&amp;#x30C8;&amp;#x76F4;&amp;#x4E0B;&amp;#x306E;urls.py&amp;#x306F;&amp;#x30A4;&amp;#x30F3;&amp;#x30AF;&amp;#x30EB;&amp;#x30FC;&amp;#x30C9;&amp;#x3092;&amp;#x884C;&amp;#x3063;&amp;#x3066;&amp;#x3044;&amp;#x308B;&amp;#x3060;&amp;#x3051;&amp;#x3067;&amp;#x3059;&amp;#x3002;
    &amp;#x53D6;&amp;#x5F97;&amp;#x3068;&amp;#x66F4;&amp;#x65B0;&amp;#x3092;&amp;#x540C;&amp;#x4E00;URL&amp;#x306B;&amp;#x3059;&amp;#x308B;&amp;#x3068;&amp;#x3001;&amp;#x66F4;&amp;#x65B0;&amp;#x6642;&amp;#x306B;&amp;#x30A8;&amp;#x30E9;&amp;#x30FC;&amp;#x304C;&amp;#x51FA;&amp;#x305F;&amp;#x969B;&amp;#x306E;&amp;#x51E6;&amp;#x7406;&amp;#x3067;&amp;#x53D6;&amp;#x5F97;&amp;#x3068;&amp;#x540C;&amp;#x3058;&amp;#x7269;&amp;#x3092;&amp;#x4F7F;&amp;#x3044;&amp;#x56DE;&amp;#x305B;&amp;#x308B;&amp;#x306E;&amp;#x3067;&amp;#x3001;&amp;#x540C;&amp;#x4E00;&amp;#x306B;&amp;#x3057;&amp;#x307E;&amp;#x3059;&amp;#x3002;
    &amp;#x53D6;&amp;#x5F97;&amp;#x3068;&amp;#x66F4;&amp;#x65B0;&amp;#x306E;&amp;#x3069;&amp;#x3061;&amp;#x3089;&amp;#x3067;&amp;#x547C;&amp;#x3070;&amp;#x308C;&amp;#x305F;&amp;#x306E;&amp;#x304B;&amp;#x3092;&amp;#x5224;&amp;#x5225;&amp;#x3059;&amp;#x308B;&amp;#x306E;&amp;#x306F;GET&amp;#x304B;POST&amp;#x304B;&amp;#x3092;&amp;#x5229;&amp;#x7528;&amp;#x3057;&amp;#x307E;&amp;#x3059;&amp;#x3002;

  • &amp;#x540D;&amp;#x524D;&amp;#x306F;&amp;#x30D3;&amp;#x30E5;&amp;#x30FC;&amp;#x3067;&amp;#x3059;&amp;#x304C;&amp;#x3001;&amp;#x5B9F;&amp;#x969B;&amp;#x306F;&amp;#x30B3;&amp;#x30F3;&amp;#x30C8;&amp;#x30ED;&amp;#x30FC;&amp;#x30E9;&amp;#x3067;&amp;#x3059;&amp;#x3002;
    URL&amp;#x306E;&amp;#x3068;&amp;#x3053;&amp;#x308D;&amp;#x3067;task_id&amp;#x3068;&amp;#x306A;&amp;#x3063;&amp;#x3066;&amp;#x3044;&amp;#x305F;&amp;#x7269;&amp;#x304C;&amp;#x3001;edit_task&amp;#x306E;task_id&amp;#x306B;&amp;#x6E21;&amp;#x3055;&amp;#x308C;&amp;#x307E;&amp;#x3059;&amp;#x3002;&amp;#x7B2C;&amp;#x4E00;&amp;#x5F15;&amp;#x6570;&amp;#x306E;request&amp;#x3068;&amp;#x3044;&amp;#x3046;&amp;#x30AA;&amp;#x30D6;&amp;#x30B8;&amp;#x30A7;&amp;#x30AF;&amp;#x30C8;&amp;#x306F;&amp;#x540D;&amp;#x524D;&amp;#x304B;&amp;#x3089;&amp;#x60F3;&amp;#x50CF;&amp;#x3067;&amp;#x304D;&amp;#x308B;&amp;#x3068;&amp;#x304A;&amp;#x308A;&amp;#x306E;&amp;#x7269;&amp;#x3067;&amp;#x3059;&amp;#x3002;render_to_response&amp;#x3068;&amp;#x3044;&amp;#x3046;&amp;#x30D5;&amp;#x30A1;&amp;#x30F3;&amp;#x30AF;&amp;#x30B7;&amp;#x30E7;&amp;#x30F3;&amp;#x306E;&amp;#x7D50;&amp;#x679C;&amp;#x3092;&amp;#x8FD4;&amp;#x3057;&amp;#x3066;&amp;#x3044;&amp;#x307E;&amp;#x3059;&amp;#x304C;&amp;#x3001;&amp;#x3053;&amp;#x308C;&amp;#x306F;django&amp;#x306E;&amp;#x30C7;&amp;#x30D5;&amp;#x30A9;&amp;#x30EB;&amp;#x30C8;&amp;#x30C6;&amp;#x30F3;&amp;#x30D7;&amp;#x30EC;&amp;#x30FC;&amp;#x30C8;&amp;#x30B7;&amp;#x30B9;&amp;#x30C6;&amp;#x30E0;&amp;#x3092;&amp;#x4F7F;&amp;#x7528;&amp;#x3057;&amp;#x3066;&amp;#x30EC;&amp;#x30B9;&amp;#x30DD;&amp;#x30F3;&amp;#x30B9;&amp;#x3092;&amp;#x8FD4;&amp;#x3059;&amp;#x30B7;&amp;#x30E7;&amp;#x30FC;&amp;#x30C8;&amp;#x30AB;&amp;#x30C3;&amp;#x30C8;&amp;#x30D5;&amp;#x30A1;&amp;#x30F3;&amp;#x30AF;&amp;#x30B7;&amp;#x30E7;&amp;#x30F3;&amp;#x3067;&amp;#x3059;&amp;#x3002;&amp;#x3068;&amp;#x306B;&amp;#x304B;&amp;#x304F;&amp;#x30EC;&amp;#x30B9;&amp;#x30DD;&amp;#x30F3;&amp;#x30B9;&amp;#x3092;&amp;#x8FD4;&amp;#x305B;&amp;#x3070;&amp;#x3088;&amp;#x3044;&amp;#x306E;&amp;#x3067;&amp;#x3001;&amp;#x5225;&amp;#x306E;&amp;#x30C6;&amp;#x30F3;&amp;#x30D7;&amp;#x30EC;&amp;#x30FC;&amp;#x30C8;&amp;#x30B7;&amp;#x30B9;&amp;#x30C6;&amp;#x30E0;&amp;#x3092;&amp;#x4F7F;&amp;#x7528;&amp;#x3059;&amp;#x308B;&amp;#x306E;&amp;#x3082;&amp;#x3001;XML&amp;#x3084;PDF&amp;#x3092;&amp;#x8FD4;&amp;#x3059;&amp;#x306E;&amp;#x3082;&amp;#x81EA;&amp;#x7531;&amp;#x3067;&amp;#x3059;&amp;#x3002;
    &amp;#x30D3;&amp;#x30E5;&amp;#x30FC;&amp;#x306F;&amp;#x3001;&amp;#x30EA;&amp;#x30AF;&amp;#x30A8;&amp;#x30B9;&amp;#x30C8;&amp;#x3092;&amp;#x53D7;&amp;#x3051;&amp;#x53D6;&amp;#x3063;&amp;#x3066;&amp;#x51E6;&amp;#x7406;&amp;#x3092;&amp;#x3057;&amp;#x3066;&amp;#x30EC;&amp;#x30B9;&amp;#x30DD;&amp;#x30F3;&amp;#x30B9;&amp;#x3092;&amp;#x8FD4;&amp;#x3059;&amp;#x3002;&amp;#x305D;&amp;#x308C;&amp;#x3060;&amp;#x3051;&amp;#x306E;&amp;#x3082;&amp;#x306E;&amp;#x3067;&amp;#x3059;&amp;#x3002;

  • DRY&amp;#x306E;&amp;#x539F;&amp;#x5247;&amp;#x304C;&amp;#x3042;&amp;#x308B;&amp;#x306E;&amp;#x3067;&amp;#x3001;&amp;#x5165;&amp;#x529B;&amp;#x5024;validate&amp;#x3082;Model&amp;#x306E;&amp;#x60C5;&amp;#x5831;&amp;#x304B;&amp;#x3089;&amp;#x884C;&amp;#x308F;&amp;#x308C;&amp;#x307E;&amp;#x3059;&amp;#x3002;
    &amp;#x81EA;&amp;#x52D5;&amp;#x30DE;&amp;#x30CB;&amp;#x30D4;&amp;#x30E5;&amp;#x30EC;&amp;#x30FC;&amp;#x30BF;&amp;#x306F;&amp;#x8FFD;&amp;#x52A0;&amp;#x7528;&amp;#x3068;&amp;#x5909;&amp;#x66F4;&amp;#x7528;&amp;#x306E;&amp;#xFF12;&amp;#x7A2E;&amp;#x985E;&amp;#x304C;&amp;#x3042;&amp;#x308A;&amp;#x307E;&amp;#x3059;&amp;#x3002;
    Model&amp;#x306B;&amp;#x8A18;&amp;#x8FF0;&amp;#x3057;&amp;#x305F;&amp;#x5B9A;&amp;#x7FA9;&amp;#x3068;Model&amp;#x306E;META&amp;#x306B;&amp;#x8A18;&amp;#x8FF0;&amp;#x3057;&amp;#x305F;&amp;#x30AB;&amp;#x30B9;&amp;#x30BF;&amp;#x30E0;&amp;#x30D0;&amp;#x30EA;&amp;#x30C7;&amp;#x30FC;&amp;#x30BF;&amp;#x304C;&amp;#x547C;&amp;#x3073;&amp;#x51FA;&amp;#x3055;&amp;#x308C;&amp;#x307E;&amp;#x3059;&amp;#x3002;
    &amp;#x9762;&amp;#x767D;&amp;#x3044;&amp;#x306E;&amp;#x306F;&amp;#x5024;&amp;#x3092;&amp;#x8A70;&amp;#x3081;&amp;#x76F4;&amp;#x3055;&amp;#x306A;&amp;#x304F;&amp;#x3066;&amp;#x3082;&amp;#x305D;&amp;#x306E;&amp;#x307E;&amp;#x307E;&amp;#x4FDD;&amp;#x5B58;&amp;#x3067;&amp;#x304D;&amp;#x308B;&amp;#x3053;&amp;#x3068;&amp;#x3067;&amp;#x3059;&amp;#x3002;&amp;#x5FB9;&amp;#x5E95;&amp;#x3057;&amp;#x3066;&amp;#x7121;&amp;#x99C4;&amp;#x3092;&amp;#x7701;&amp;#x3044;&amp;#x3066;&amp;#x3044;&amp;#x307E;&amp;#x3059;&amp;#x3002;
  • &amp;#x73FE;&amp;#x5B9F;&amp;#x7684;&amp;#x306B;&amp;#x306F;Model&amp;#x3068;&amp;#xFF11;&amp;#x5BFE;&amp;#xFF11;&amp;#x306E;&amp;#x30C7;&amp;#x30FC;&amp;#x30BF;&amp;#x304C;&amp;#x30B5;&amp;#x30D6;&amp;#x30DF;&amp;#x30C3;&amp;#x30C8;&amp;#x3055;&amp;#x308C;&amp;#x308B;&amp;#x3053;&amp;#x3068;&amp;#x306F;&amp;#x5C11;&amp;#x306A;&amp;#x3044;&amp;#x306E;&amp;#x3067;&amp;#x3001;&amp;#x30AB;&amp;#x30B9;&amp;#x30BF;&amp;#x30E0;Manipulator&amp;#x3092;&amp;#x4F5C;&amp;#x6210;&amp;#x3057;&amp;#x307E;&amp;#x3059;&amp;#x3002;
    &amp;#x81EA;&amp;#x52D5;&amp;#x3092;&amp;#x3044;&amp;#x304F;&amp;#x3064;&amp;#x304B;&amp;#x901A;&amp;#x3059;&amp;#x3068;&amp;#x3044;&amp;#x3046;&amp;#x624B;&amp;#x3082;&amp;#x3042;&amp;#x308B;&amp;#x3068;&amp;#x601D;&amp;#x3044;&amp;#x307E;&amp;#x3059;&amp;#x304C;&amp;#x3001;&amp;#x3044;&amp;#x307E;&amp;#x306E;&amp;#x3068;&amp;#x3053;&amp;#x308D;&amp;#x3069;&amp;#x3046;&amp;#x3059;&amp;#x308B;&amp;#x306E;&amp;#x304C;&amp;#x3088;&amp;#x3044;&amp;#x306E;&amp;#x304B;&amp;#x308F;&amp;#x304B;&amp;#x308A;&amp;#x307E;&amp;#x305B;&amp;#x3093;&amp;#x3002;
    &amp;#x3042;&amp;#x3068;&amp;#x3001;&amp;#x3053;&amp;#x306E;&amp;#x4F8B;&amp;#x3067;&amp;#x4F7F;&amp;#x7528;&amp;#x3057;&amp;#x3066;&amp;#x3044;&amp;#x308B;isValidTagName&amp;#x306F;&amp;#x3053;&amp;#x3053;&amp;#x3067;&amp;#x306F;&amp;#x306A;&amp;#x304F;&amp;#x3066;Model&amp;#x306E;META&amp;#x306B;&amp;#x8A18;&amp;#x8FF0;&amp;#x3057;&amp;#x3066;&amp;#x5B9F;&amp;#x969B;&amp;#x306F;&amp;#x554F;&amp;#x984C;&amp;#x3042;&amp;#x308A;&amp;#x307E;&amp;#x305B;&amp;#x3093;&amp;#x3002;
    &amp;#x4F7F;&amp;#x7528;&amp;#x65B9;&amp;#x6CD5;&amp;#x306F;&amp;#x7C21;&amp;#x5358;&amp;#x3067;&amp;#x3059;&amp;#x3002;&amp;#x81EA;&amp;#x52D5;&amp;#x306E;&amp;#x7269;&amp;#x3068;&amp;#x306E;&amp;#x9055;&amp;#x3044;&amp;#x306F;&amp;#x3001;&amp;#x30AB;&amp;#x30B9;&amp;#x30BF;&amp;#x30E0;Manipulator&amp;#x3092;&amp;#x4F7F;&amp;#x3063;&amp;#x3066;&amp;#x306E;&amp;#x4FDD;&amp;#x5B58;&amp;#x304C;&amp;#x51FA;&amp;#x6765;&amp;#x306A;&amp;#x3044;&amp;#x3053;&amp;#x3068;&amp;#x304F;&amp;#x3089;&amp;#x3044;&amp;#x3067;&amp;#x3057;&amp;#x3087;&amp;#x3046;&amp;#x3002;
  • &amp;#x8A2D;&amp;#x7F6E;&amp;#x30C7;&amp;#x30A3;&amp;#x30EC;&amp;#x30AF;&amp;#x30C8;&amp;#x30EA;&amp;#x306F;&amp;#x8907;&amp;#x6570;&amp;#x8A2D;&amp;#x5B9A;&amp;#x53EF;&amp;#x80FD;&amp;#x3067;&amp;#x3059;&amp;#x3002;
    &amp;#x4ECA;&amp;#x56DE;&amp;#x306F;&amp;#x7D99;&amp;#x627F;&amp;#x3092;&amp;#x4F7F;&amp;#x3063;&amp;#x305F;&amp;#x4F8B;&amp;#x3067;&amp;#x3044;&amp;#x304D;&amp;#x307E;&amp;#x3059;&amp;#x3002;
    &amp;#x307E;&amp;#x305A;&amp;#x4F5C;&amp;#x6210;&amp;#x3057;&amp;#x305F;&amp;#x306E;&amp;#x306F;&amp;#x3001;&amp;#x30C6;&amp;#x30F3;&amp;#x30D7;&amp;#x30EC;&amp;#x30FC;&amp;#x30C8;&amp;#x30C7;&amp;#x30A3;&amp;#x30EC;&amp;#x30AF;&amp;#x30C8;&amp;#x30EA;&amp;#x306E;&amp;#x4E0B;&amp;#x306E;workstyle/TaskForm.html&amp;#x3067;&amp;#x3059;&amp;#x3002;&amp;#x30A2;&amp;#x30D7;&amp;#x30EA;&amp;#x30B1;&amp;#x30FC;&amp;#x30B7;&amp;#x30E7;&amp;#x30F3;&amp;#x540D;&amp;#x3092;&amp;#x5165;&amp;#x308C;&amp;#x3066;&amp;#x3044;&amp;#x308B;&amp;#x306E;&amp;#x304C;&amp;#x30DD;&amp;#x30A4;&amp;#x30F3;&amp;#x30C8;&amp;#x3067;&amp;#x3059;&amp;#xFF08;&amp;#x30D3;&amp;#x30E5;&amp;#x30FC;&amp;#x304B;&amp;#x3089;&amp;#x306F;workstyle/TaskForm&amp;#x3068;&amp;#x6D0B;&amp;#x821E;&amp;#x306E;&amp;#x3067;&amp;#x3059;&amp;#x304C;&amp;#x3001;&amp;#x3053;&amp;#x3046;&amp;#x3059;&amp;#x308C;&amp;#x3070;&amp;#x91CD;&amp;#x8907;&amp;#x3057;&amp;#x306B;&amp;#x304F;&amp;#x304F;&amp;#x306A;&amp;#x308A;&amp;#x307E;&amp;#x3059;&amp;#xFF09;&amp;#x3002;
    &amp;#x30C6;&amp;#x30F3;&amp;#x30D7;&amp;#x30EC;&amp;#x30FC;&amp;#x30C8;&amp;#x306E;&amp;#x30C7;&amp;#x30D5;&amp;#x30A9;&amp;#x30EB;&amp;#x30C8;&amp;#x306E;&amp;#x62E1;&amp;#x5F35;&amp;#x5B50;&amp;#x306F;.html&amp;#x3067;&amp;#x3059;&amp;#xFF08;&amp;#x5909;&amp;#x66F4;&amp;#x53EF;&amp;#x80FD;&amp;#xFF09;&amp;#x3002;
    {%&amp;#x304C;if&amp;#x6587;&amp;#x306A;&amp;#x3069;&amp;#x306E;&amp;#x6587;&amp;#x3092;&amp;#x8868;&amp;#x3057;&amp;#x3001;{{&amp;#x304C;&amp;#x5909;&amp;#x6570;&amp;#x306E;&amp;#x51FA;&amp;#x529B;&amp;#x3067;&amp;#x3059;&amp;#x3002;
    for&amp;#x30EB;&amp;#x30FC;&amp;#x30D7;&amp;#x3084;&amp;#x30EB;&amp;#x30FC;&amp;#x30D7;&amp;#x30AB;&amp;#x30A6;&amp;#x30F3;&amp;#x30BF;&amp;#x30FC;&amp;#x7B49;&amp;#x3001;&amp;#x5927;&amp;#x62B5;&amp;#x306E;&amp;#x5FC5;&amp;#x8981;&amp;#x306A;&amp;#x7269;&amp;#x306F;&amp;#x305D;&amp;#x308D;&amp;#x3063;&amp;#x3066;&amp;#x3044;&amp;#x307E;&amp;#x3059;&amp;#x3002;&amp;#x30D5;&amp;#x30A3;&amp;#x30EB;&amp;#x30BF;&amp;#x30FC;&amp;#x3082;&amp;#x7D50;&amp;#x69CB;&amp;#x306A;&amp;#x6570;&amp;#x3042;&amp;#x308A;&amp;#x307E;&amp;#x3059;&amp;#x3002;
    &amp;#x7D99;&amp;#x627F;&amp;#x306F;&amp;#x3001;&amp;#x30D9;&amp;#x30FC;&amp;#x30B9;&amp;#x306B;&amp;#x3042;&amp;#x308B;&amp;#x30D6;&amp;#x30ED;&amp;#x30C3;&amp;#x30AF;&amp;#x3092;&amp;#x7D99;&amp;#x627F;&amp;#x5148;&amp;#x306E;&amp;#x8A18;&amp;#x8FF0;&amp;#x306B;&amp;#x7F6E;&amp;#x304D;&amp;#x63DB;&amp;#x3048;&amp;#x307E;&amp;#x3059;&amp;#xFF08;&amp;#x7D99;&amp;#x627F;&amp;#x5148;&amp;#x3067;&amp;#x306F;&amp;#x30D6;&amp;#x30ED;&amp;#x30C3;&amp;#x30AF;&amp;#x4EE5;&amp;#x5916;&amp;#x306F;&amp;#x4E0D;&amp;#x8981;&amp;#xFF09;&amp;#x3002;
    &amp;#xFF08;&amp;#x4F59;&amp;#x88D5;&amp;#x304C;&amp;#x3042;&amp;#x3063;&amp;#x305F;&amp;#x3089;&amp;#x30B3;&amp;#x30FC;&amp;#x30C9;&amp;#xFF09;

  • &amp;#x30E2;&amp;#x30B8;&amp;#x30E5;&amp;#x30FC;&amp;#x30EB;&amp;#x3067;Library&amp;#x306B;&amp;#x30EC;&amp;#x30B8;&amp;#x30B9;&amp;#x30C8;&amp;#x3057;&amp;#x3066;&amp;#x3001;&amp;#x30D3;&amp;#x30E5;&amp;#x30FC;&amp;#x3067;&amp;#x3082;&amp;#x30A4;&amp;#x30F3;&amp;#x30DD;&amp;#x30FC;&amp;#x30C8;&amp;#x3092;&amp;#x3057;&amp;#x3001;&amp;#x30C6;&amp;#x30F3;&amp;#x30D7;&amp;#x30EC;&amp;#x30FC;&amp;#x30C8;&amp;#x3067;&amp;#x3082;&amp;#x30ED;&amp;#x30FC;&amp;#x30C9;&amp;#x3092;&amp;#x3057;&amp;#x307E;&amp;#x3059;&amp;#x3002;
    &amp;#x3061;&amp;#x3087;&amp;#x3063;&amp;#x3068;&amp;#x9762;&amp;#x5012;&amp;#x3067;&amp;#x3059;&amp;#x304C;&amp;#x3001;&amp;#x4FBF;&amp;#x5229;&amp;#x306A;&amp;#x6A5F;&amp;#x80FD;&amp;#x3067;&amp;#x3059;&amp;#x3002;
  • &amp;#x672C;&amp;#x6765;&amp;#x306F;&amp;#x5148;&amp;#x3067;&amp;#x3059;&amp;#x304C;&amp;#x30FB;&amp;#x30FB;&amp;#x30FB;&amp;#x3002;
    greenpeace&amp;#x306E;melt&amp;#x3068;&amp;#x3044;&amp;#x3046;&amp;#x30D7;&amp;#x30ED;&amp;#x30B8;&amp;#x30A7;&amp;#x30AF;&amp;#x30C8;&amp;#x3067;&amp;#x306F;twil&amp;#x3068;&amp;#x3044;&amp;#x3046;&amp;#x30E9;&amp;#x30A4;&amp;#x30D6;&amp;#x30E9;&amp;#x30EA;&amp;#x3092;&amp;#x5229;&amp;#x7528;&amp;#x3057;&amp;#x3066;&amp;#x30C6;&amp;#x30B9;&amp;#x30C8;&amp;#x3092;&amp;#x3057;&amp;#x3066;&amp;#x3044;&amp;#x308B;&amp;#x6A21;&amp;#x69D8;&amp;#x3067;&amp;#x3059;&amp;#x3002;
    &amp;#x3061;&amp;#x3087;&amp;#x3063;&amp;#x3068;&amp;#x307E;&amp;#x3060;&amp;#x3044;&amp;#x308D;&amp;#x3044;&amp;#x308D;&amp;#x8ABF;&amp;#x67FB;&amp;#x4E0D;&amp;#x8DB3;&amp;#x3067;&amp;#x3059;&amp;#x3002;
  • &amp;#x653E;&amp;#x7F6E;&amp;#x3057;&amp;#x3066;&amp;#x3042;&amp;#x308B;&amp;#x30C1;&amp;#x30E5;&amp;#x30FC;&amp;#x30C8;&amp;#x30EA;&amp;#x30A2;&amp;#x30EB;&amp;#x7B49;&amp;#x306E;&amp;#x8A33;&amp;#x306F;&amp;#x3001;&amp;#x30D0;&amp;#x30FC;&amp;#x30B8;&amp;#x30E7;&amp;#x30F3;1.0&amp;#x524D;&amp;#x5F8C;&amp;#x3067;&amp;#x624B;&amp;#x3092;&amp;#x5165;&amp;#x308C;&amp;#x3088;&amp;#x3046;&amp;#x3068;&amp;#x8003;&amp;#x3048;&amp;#x3066;&amp;#x3044;&amp;#x307E;&amp;#x3059;&amp;#x3002;
  • &amp;#x4EE5;&amp;#x4E0A;&amp;#x3001;&amp;#x99C6;&amp;#x3051;&amp;#x8DB3;&amp;#x3067;&amp;#x3059;&amp;#x304C;&amp;#x3001;&amp;#x7D39;&amp;#x4ECB;&amp;#x81EA;&amp;#x4F53;&amp;#x306F;&amp;#x7D42;&amp;#x308F;&amp;#x308A;&amp;#x307E;&amp;#x3059;&amp;#x3002;
  • Transcript of "伝説のギタリストじゃない方のDjango"

    1. 1. Django
    2. 2. Django biography Django Reinhardt 1910 Django 2003 2005 7 Rails discography www.ljworld.com www.lawrence.com projects.washingtonpost.com/contress/
    3. 3. main features
    4. 4. main features O/R Mapper Automatic Admin Interface Elegant URL Design Template Cache i18n
    5. 5. O/R Mapper
    6. 6. O/R Mapper DRY Model
    7. 7. O/R Mapper DRY Model Model Database
    8. 8. O/R Mapper DRY Model Model Database SQLObject SELECT keyword args ForeignKey model Index Model
    9. 9. Automatic Admin I/F
    10. 10. Automatic Admin I/F model rails scafford TurboGears catwalk
    11. 11. Automatic Admin I/F model rails scafford TurboGears catwalk
    12. 12. Automatic Admin I/F model rails scafford TurboGears catwalk
    13. 13. Elegant URL Desgin
    14. 14. Elegant URL Desgin URL emacs PROJECT/apps/project/urls.py (r'^Task/(?P<task_id>d+)/edit/$','Project.apps.project.views.edit'), emacs PROJECT/apps/project/views.py def edit(request, task_id) : do_somthing
    15. 15. Elegant URL Desgin URL http://host/WorkStyle/Task/5/edit/ emacs PROJECT/apps/project/urls.py (r'^Task/(?P<task_id>d+)/edit/$','Project.apps.project.views.edit'), emacs PROJECT/apps/project/views.py def edit(request, task_id) : do_somthing
    16. 16. Elegant URL Desgin URL http://host/WorkStyle/Task/5/edit/ 5 emacs PROJECT/apps/project/urls.py (r'^Task/(?P<task_id>d+)/edit/$','Project.apps.project.views.edit'), emacs PROJECT/apps/project/views.py def edit(request, task_id) : do_somthing
    17. 17. Elegant URL Desgin URL emacs PROJECT/apps/project/urls.py (r'^Task/(?P<task_id>d+)/edit/$','Project.apps.project.views.edit'), emacs PROJECT/apps/project/views.py def edit(request, task_id) : do_somthing
    18. 18. Template
    19. 19. Template {{ XXX:escape }} {% if task.update_date %} <tr> <th nowrap="nowrap">{% trans "Last Update" %}</th> <td>{{ task.update_date|date:"Y/m/d" }}</td> </tr> {% endif %}
    20. 20. Template {{ XXX:escape }} {% if task.update_date %} filter <tr> <th nowrap="nowrap">{% trans "Last Update" %}</th> <td>{{ task.update_date|date:"Y/m/d" }}</td> </tr> {% endif %}
    21. 21. Template {{ XXX:escape }} Tag {% if task.update_date %} <tr> <th nowrap="nowrap">{% trans "Last Update" %}</th> <td>{{ task.update_date|date:"Y/m/d" }}</td> </tr> {% endif %}
    22. 22. cache
    23. 23. cache 3 HTTP
    24. 24. Cache cache locmem( WorkStyle sqlite3 SQL 5 O/R :P4-2.4GHz+1GBMem, Gentoo, apache:2.0.54, mod_python3.x :iBookG4-800MHz, 640MBMem, ApacheBench1.3d 1000request 10concurrency
    25. 25. Cache cache locmem( WorkStyle sqlite3 SQL 5 O/R :P4-2.4GHz+1GBMem, Gentoo, apache:2.0.54, mod_python3.x :iBookG4-800MHz, 640MBMem, ApacheBench1.3d 1000request 10concurrency normal apache locmem totaltime 114.98 20.95 5.05 rec/sec 8.7 47.72 197.82
    26. 26. Cache cache locmem( WorkStyle sqlite3 SQL 5 O/R :P4-2.4GHz+1GBMem, Gentoo, apache:2.0.54, mod_python3.x :iBookG4-800MHz, 640MBMem, ApacheBench1.3d 1000request 10concurrency total time Request/sec 200 150 normal apache locmem 100 totaltime 114.98 20.95 5.05 50 rec/sec 8.7 47.72 197.82 0 normal apache locmem
    27. 27. i18n
    28. 28. i18n po settings.py Automatic Admin I/F
    29. 29. i18n po settings.py Automatic Admin I/F code _(“message”) {% trans “message” %} template
    30. 30. i18n po settings.py Automatic Admin I/F po DJANGO_HOME/bin/make-messages.py -l ja DJANGO_HOME/bin/compile-messages.py compile
    31. 31. i18n po settings.py Automatic Admin I/F > emacs settings.py MIDDLEWARE_CLASSES = ( 'django.middleware.locale.LocaleMiddleware', 'django.middleware.sessions.SessionMiddleware', 'django.middleware.common.CommonMiddleware', )
    32. 32. Python2.3 Apache2.x+mod_python3.x fast-cgi(WSGI) PostgreSQL/MySQL/SQLite3/SQLServer
    33. 33. Project Django Model URL view Template
    34. 34. Django Django python manage.py init python manage.py startapp APP Project APP APP python manage.py install APP Project django-admin.py startproject PROJECT APP
    35. 35. NO django-admin.py startproject PROJECT YES Django python manage.py init python manage.py startapp APP emacs app/APP/models/APP.py python manage.py install APP
    36. 36. Project django-admin.py startproject WorkStyle WorkStyle + apps __init__.py __init__.py urls.py settings.py manage.py
    37. 37. Project django-admin.py startproject WorkStyle WorkStyle + apps __init__.py __init__.py urls.py settings.py manage.py Project
    38. 38. > emacs Project/settings.py # 'postgresql', 'mysql', 'sqlite3' or 'ado_mssql'. DATABASE_ENGINE = 'postgresql' DATABASE_NAME = 'workstyle' DATABASE_USER = 'workstyle' DATABASE_PASSWORD = 'workstyle' DATABASE_HOST = '' DATABASE_PORT = ''
    39. 39. Django Django python manage.py init ## DJANGO CORE TABLE auth_groups auth_groups_permissions auth_messages auth_permissions auth_users auth_users_groups auth_users_user_permissions content_types core_sessions packages sites
    40. 40. python manage.py startapp workstyle WorkStyle + apps __init__.py + workstyle __init__.py view.py + models __init__.py workstyles.py __init__.py urls.py settings.py manage.py
    41. 41. python manage.py startapp workstyle WorkStyle + apps __init__.py + workstyle __init__.py view.py + models __init__.py workstyles.py __init__.py urls.py settings.py manage.py
    42. 42. python manage.py startapp workstyle WorkStyle + apps __init__.py + workstyle __init__.py view.py + models __init__.py workstyles.py __init__.py urls.py settings.py manage.py
    43. 43. python manage.py startapp workstyle WorkStyle + apps __init__.py + workstyle __init__.py view.py + models __init__.py workstyles.py __init__.py urls.py settings.py manage.py
    44. 44. python manage.py startapp workstyle WorkStyle + apps __init__.py + workstyle __init__.py view.py + models __init__.py workstyles.py __init__.py urls.py settings.py manage.py
    45. 45. python manage.py startapp workstyle WorkStyle + apps __init__.py + workstyle __init__.py view.py + models __init__.py workstyles.py __init__.py urls.py settings.py manage.py
    46. 46. Model Model > emacs Project/apps/workstyle/models/workstyle.py from django.core import meta class Task(meta.Model): task = meta.TextField(db_index=True) create_date = meta.DateTimeField(auto_now_add=True) update_date = meta.DateTimeField() tag_searchable = meta.CharField(maxlength=800, db_index=True, null=True) estimate = meta.FloatField(max_digits=3, default=0, decimal_places=1, null=True) status = meta.IntegerField(maxlength=1, default=3, choices=TASK_STATUS_CHOICES, db_index=True) class META: ordering = ['-update_date']
    47. 47. Model Model meta.Model > emacs Project/apps/workstyle/models/workstyle.py from django.core import meta class Task(meta.Model): task = meta.TextField(db_index=True) create_date = meta.DateTimeField(auto_now_add=True) update_date = meta.DateTimeField() tag_searchable = meta.CharField(maxlength=800, db_index=True, null=True) estimate = meta.FloatField(max_digits=3, default=0, decimal_places=1, null=True) status = meta.IntegerField(maxlength=1, default=3, choices=TASK_STATUS_CHOICES, db_index=True) class META: ordering = ['-update_date']
    48. 48. Model python manage.py install workstyle ## APPLICATION TABLE workstyle_tasks workstyle_tags workstyle_taglists workstyle_comments workstyle_attachments
    49. 49. Model python manage.py install workstyle ## APPLICATION TABLE workstyle_tasks workstyle_tags workstyle_taglists workstyle_comments workstyle_attachments
    50. 50. Model python manage.py install workstyle ## APPLICATION TABLE workstyle_tasks workstyle_tags workstyle_taglists workstyle_comments workstyle_attachments Class
    51. 51. O/R Python > export DJANGO_SETTINGS_MODULE=WorkStyle.settings > python
    52. 52. O/R Python > export DJANGO_SETTINGS_MODULE=WorkStyle.settings > python import django.models.workstyle import tasks, comments #tasks Task workstyle_tasks #(Black Magic) tasks.get_list(**keyargs) # query = {} query[‘status__in’] = [1,2,3] tasks.get_list(**query)
    53. 53. O/R Python > export DJANGO_SETTINGS_MODULE=WorkStyle.settings > python import django.models.workstyle import tasks, comments tsk1 = tasks.get_object(pk=1) #pk tsk1.status = 2 tsk1.save() # tsk2 = tasks.Task(task='hoge',status=2, update_date=datetime.now()) tsk2.save() #
    54. 54. O/R Python > export DJANGO_SETTINGS_MODULE=WorkStyle.settings > python import django.models.workstyle import tasks, comments # tsk.add_comment(comment=in_comment_body, commentator=in_commentator) # 1:n tsk.get_comment_list()
    55. 55. O/R Python > export DJANGO_SETTINGS_MODULE=WorkStyle.settings > python import django.models.workstyle import tasks, comments #join:Comment # Comment get_task SQL comments.get_list(select_related=True)
    56. 56. O/R Python > export DJANGO_SETTINGS_MODULE=WorkStyle.settings > python import django.models.workstyle import tasks, comments #join:Comment # Comment get_task SQL comments.get_list(select_related=True)
    57. 57. URL Dispatcher > emacs Project/urls.py (r'^WorkStyle/', include('WorkStyle.apps.workstyle.urls')), > touch Project/apps/workstyle/urls.py > emacs Project/apps/workstyle/urls.py (r'^Task/(?P<task_id>d+)/edit/$', 'WorkStyle.apps.workstyle.task.edit_task'),
    58. 58. URL Dispatcher > emacs Project/urls.py (r'^WorkStyle/', include('WorkStyle.apps.workstyle.urls')), > touch Project/apps/workstyle/urls.py > emacs Project/apps/workstyle/urls.py (r'^Task/(?P<task_id>d+)/edit/$', 'WorkStyle.apps.workstyle.task.edit_task'),
    59. 59. > emacs WorkStyle/apps/workstyle/task.py def edit_task(request, task_id) : task = get_object_or_404(tasks,pk=task_id) manipulator = tasks.ChangeManiplator() if request.POST : new_data = request.POST.copy() errors = manipulator.get_validation_errors(new_data) if not errors : # return render_to_response(....) else : errors = {} new_data = {'status': str(task.status), 'task': task.task, 'estimate': task.estimate} return render_to_response('workstyle/TaskFormEdit',{'form': form, 'task': task....})
    60. 60. > emacs WorkStyle/apps/workstyle/task.py def edit_task(request, task_id) : task = get_object_or_404(tasks,pk=task_id) manipulator = tasks.ChangeManiplator() if request.POST : new_data = request.POST.copy() errors = manipulator.get_validation_errors(new_data) if not errors : # return render_to_response(....) else : errors = {} new_data = {'status': str(task.status), 'task': task.task, 'estimate': task.estimate} return render_to_response('workstyle/TaskFormEdit',{'form': form, 'task': task....})
    61. 61. Manipulator model Manipulator (Add,Change) def create(request): manipulator = tasks.AddManipulator() new_data = request.POST.copy() errors = manipulator.get_validation_errors(new_data) if errors : # else : manipulator.do_html2python(request.POST) new_task = manipulator.save(request.POST)
    62. 62. Manipulator model Add Change Manipulator (Add,Change) def create(request): manipulator = tasks.AddManipulator() new_data = request.POST.copy() errors = manipulator.get_validation_errors(new_data) if errors : # else : manipulator.do_html2python(request.POST) new_task = manipulator.save(request.POST)
    63. 63. Manipulator validation model errors Manipulator (Add,Change) def create(request): manipulator = tasks.AddManipulator() new_data = request.POST.copy() errors = manipulator.get_validation_errors(new_data) if errors : # else : manipulator.do_html2python(request.POST) new_task = manipulator.save(request.POST)
    64. 64. Manipulator model Manipulator (Add,Change) def create(request): manipulator = tasks.AddManipulator() new_data = request.POST.copy() errors = manipulator.get_validation_errors(new_data) if errors : # else : manipulator.do_html2python(request.POST) new_task = manipulator.save(request.POST)
    65. 65. Manipulator class TaskManipulator(formfields.Manipulator): def __init__(self): self.fields = ( formfields.LargeTextField( field_name="task_tag", validator_list=[self.isValidTagName]), formfields.TextField( field_name="commentator", maxlength=50, is_required=False), formfields.SelectField( field_name="status", choices=TASK_STATUS, is_required=True), ) def isValidTagName(self, field_data, all_data): task_tag_list = string.split(field_data, "]") for task_tag in task_tag_list : task_tag = string.strip(string.replace(task_tag, "[", "")) if len(task_tag) > 49 : raise validators.ValidationError(_("Tag's name is must be less than 50 characters."))
    66. 66. Manipulator #view manipulator = TaskManipulator() try : task = tasks.get_object(pk=task_id) except ObjectDoesNotExist : raise Http404 if request.POST : new_data = request.POST.copy() errors = manipulator.get_validation_errors(new_data) if not errors : return update_task(request, task_id) else :
    67. 67. Template settings.py Template > emacs Project/settings.py TEMPLATE_DIRS = ( WORKSTYLE_BASE_DIR + "/apps/workstyle/templates", )
    68. 68. Template settings.py Template > emacs Project/settings.py TEMPLATE_DIRS = ( WORKSTYLE_BASE_DIR + "/apps/workstyle/templates", ) > emacs Project/apps/workstyle/templates/workstyle/TaskForm.html <div id="main"> {% block formaction %} <form action="{{ workstyle_root }}/Task/{{ task.id }}/update/" name="taskForm" method="POST" enctype="multipart/form-data" class="tableForm" onSubmit="return checkBody();"> {% endblock %} Base
    69. 69. Template settings.py Template > emacs Project/settings.py TEMPLATE_DIRS = ( WORKSTYLE_BASE_DIR + "/apps/workstyle/templates", ) > emacs Project/apps/workstyle/templates/workstyle/TaskFormNew.html {% extends "workstyle/TaskForm" %} {%block formaction %} <form action="{{ workstyle_root }}/Task/add/" name="task_form" method="POST" enctype="multipart/form-data" class="tableForm" onSubmit="return checkBody();"> {% endblock %} New extends Base
    70. 70. Template settings.py Template > emacs Project/settings.py TEMPLATE_DIRS = ( WORKSTYLE_BASE_DIR + "/apps/workstyle/templates", ) > emacs Project/apps/workstyle/templates/workstyle/TaskFormEdit.html {% extends "workstyle/TaskForm" %} {%block formaction %} <form action="{{ workstyle_root }}/Task/{{ task.id }}/update/" name="taskForm" method="POST" enctype="multipart/form-data" class="tableForm" onSubmit="return checkBody();"> {% endblock %} Edit extends Base
    71. 71. > emacs Project/apps/workstyle/templatetags/wsfilter.py from django.core import template register = template.Library() def truncatelines(value, arg) : result = value #do something return result register.filter('truncatelines', truncatelines)
    72. 72. > emacs Porject/apps/workstyle/task.py from WorkStyle.apps.workstyle.templatetags import wsfilters
    73. 73. > emacs Porject/apps/workstyle/task.py from WorkStyle.apps.workstyle.templatetags import wsfilters > emacs Project/apps/workstyle/templates/workstyle/TaskList.html {% load wsfilters %} {{ task.task|truncatelines:3 }}
    74. 74. Test pyunit simon.bofh.ms
    75. 75. Django Milestone 0.92 Magic 1.00
    76. 76. www.everes.net
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×