Submit Search
Upload
伝説のギタリストじゃない方のDjango
•
Download as ZIP, PDF
•
1 like
•
1,341 views
makoto tsuyuki
Follow
2006年1月にPythonWorkshop03でDjangoを紹介した時のスライドです。
Read less
Read more
Technology
Report
Share
Report
Share
1 of 77
Download now
Recommended
A Little Backbone For Your App
A Little Backbone For Your App
Luca Mearelli
OSCON Google App Engine Codelab - July 2010
OSCON Google App Engine Codelab - July 2010
ikailan
Rails Plugin Development 101 (...and some...)
Rails Plugin Development 101 (...and some...)
Jim Myhrberg
And now you have two problems. Ruby regular expressions for fun and profit by...
And now you have two problems. Ruby regular expressions for fun and profit by...
Codemotion
Django
Django
Ivan Widodo
Bake by cake php2.0
Bake by cake php2.0
株式会社バンシステムズ
Django - 次の一歩 gumiStudy#3
Django - 次の一歩 gumiStudy#3
makoto tsuyuki
The Best (and Worst) of Django
The Best (and Worst) of Django
Jacob Kaplan-Moss
Recommended
A Little Backbone For Your App
A Little Backbone For Your App
Luca Mearelli
OSCON Google App Engine Codelab - July 2010
OSCON Google App Engine Codelab - July 2010
ikailan
Rails Plugin Development 101 (...and some...)
Rails Plugin Development 101 (...and some...)
Jim Myhrberg
And now you have two problems. Ruby regular expressions for fun and profit by...
And now you have two problems. Ruby regular expressions for fun and profit by...
Codemotion
Django
Django
Ivan Widodo
Bake by cake php2.0
Bake by cake php2.0
株式会社バンシステムズ
Django - 次の一歩 gumiStudy#3
Django - 次の一歩 gumiStudy#3
makoto tsuyuki
The Best (and Worst) of Django
The Best (and Worst) of Django
Jacob Kaplan-Moss
The effective use of Django ORM
The effective use of Django ORM
Yaroslav Muravskyi
Moving from Django Apps to Services
Moving from Django Apps to Services
Craig Kerstiens
Synapseindia reviews sharing intro cakephp
Synapseindia reviews sharing intro cakephp
SynapseindiaComplaints
#SPUG - Legacy applications
#SPUG - Legacy applications
Piotr Pasich
Drupal 8 in action, the route to the method
Drupal 8 in action, the route to the method
juanolalla
Zend Framework 1.9 Setup & Using Zend_Tool
Zend Framework 1.9 Setup & Using Zend_Tool
Gordon Forsythe
Hardcore URL Routing for WordPress - WordCamp Atlanta 2014 (PPT)
Hardcore URL Routing for WordPress - WordCamp Atlanta 2014 (PPT)
Mike Schinkel
Django Heresies
Django Heresies
Simon Willison
関西PHP勉強会 php5.4つまみぐい
関西PHP勉強会 php5.4つまみぐい
Hisateru Tanaka
國民雲端架構 Django + GAE
國民雲端架構 Django + GAE
Winston Chen
WordPress Queries - the right way
WordPress Queries - the right way
Anthony Hortin
Gary Gao: APIs Are Good
Gary Gao: APIs Are Good
talnoznisky
Perl web app 테스트전략
Perl web app 테스트전략
Jeen Lee
Hardcore URL Routing for WordPress - WordCamp Atlanta 2014
Hardcore URL Routing for WordPress - WordCamp Atlanta 2014
Mike Schinkel
V2 and beyond
V2 and beyond
jimi-c
Tips and tricks for building api heavy ruby on rails applications
Tips and tricks for building api heavy ruby on rails applications
Tim Cull
Looping the Loop with SPL Iterators
Looping the Loop with SPL Iterators
Mark Baker
More tips n tricks
More tips n tricks
bcoca
Perl6 grammars
Perl6 grammars
Andrew Shitov
Como construir uma Aplicação que consuma e produza updates no Twitter usando ...
Como construir uma Aplicação que consuma e produza updates no Twitter usando ...
Cirdes Filho
How to Pronounce Django
How to Pronounce Django
jtauber
Django for Beginners
Django for Beginners
Jason Davies
More Related Content
What's hot
The effective use of Django ORM
The effective use of Django ORM
Yaroslav Muravskyi
Moving from Django Apps to Services
Moving from Django Apps to Services
Craig Kerstiens
Synapseindia reviews sharing intro cakephp
Synapseindia reviews sharing intro cakephp
SynapseindiaComplaints
#SPUG - Legacy applications
#SPUG - Legacy applications
Piotr Pasich
Drupal 8 in action, the route to the method
Drupal 8 in action, the route to the method
juanolalla
Zend Framework 1.9 Setup & Using Zend_Tool
Zend Framework 1.9 Setup & Using Zend_Tool
Gordon Forsythe
Hardcore URL Routing for WordPress - WordCamp Atlanta 2014 (PPT)
Hardcore URL Routing for WordPress - WordCamp Atlanta 2014 (PPT)
Mike Schinkel
Django Heresies
Django Heresies
Simon Willison
関西PHP勉強会 php5.4つまみぐい
関西PHP勉強会 php5.4つまみぐい
Hisateru Tanaka
國民雲端架構 Django + GAE
國民雲端架構 Django + GAE
Winston Chen
WordPress Queries - the right way
WordPress Queries - the right way
Anthony Hortin
Gary Gao: APIs Are Good
Gary Gao: APIs Are Good
talnoznisky
Perl web app 테스트전략
Perl web app 테스트전략
Jeen Lee
Hardcore URL Routing for WordPress - WordCamp Atlanta 2014
Hardcore URL Routing for WordPress - WordCamp Atlanta 2014
Mike Schinkel
V2 and beyond
V2 and beyond
jimi-c
Tips and tricks for building api heavy ruby on rails applications
Tips and tricks for building api heavy ruby on rails applications
Tim Cull
Looping the Loop with SPL Iterators
Looping the Loop with SPL Iterators
Mark Baker
More tips n tricks
More tips n tricks
bcoca
Perl6 grammars
Perl6 grammars
Andrew Shitov
Como construir uma Aplicação que consuma e produza updates no Twitter usando ...
Como construir uma Aplicação que consuma e produza updates no Twitter usando ...
Cirdes Filho
What's hot
(20)
The effective use of Django ORM
The effective use of Django ORM
Moving from Django Apps to Services
Moving from Django Apps to Services
Synapseindia reviews sharing intro cakephp
Synapseindia reviews sharing intro cakephp
#SPUG - Legacy applications
#SPUG - Legacy applications
Drupal 8 in action, the route to the method
Drupal 8 in action, the route to the method
Zend Framework 1.9 Setup & Using Zend_Tool
Zend Framework 1.9 Setup & Using Zend_Tool
Hardcore URL Routing for WordPress - WordCamp Atlanta 2014 (PPT)
Hardcore URL Routing for WordPress - WordCamp Atlanta 2014 (PPT)
Django Heresies
Django Heresies
関西PHP勉強会 php5.4つまみぐい
関西PHP勉強会 php5.4つまみぐい
國民雲端架構 Django + GAE
國民雲端架構 Django + GAE
WordPress Queries - the right way
WordPress Queries - the right way
Gary Gao: APIs Are Good
Gary Gao: APIs Are Good
Perl web app 테스트전략
Perl web app 테스트전략
Hardcore URL Routing for WordPress - WordCamp Atlanta 2014
Hardcore URL Routing for WordPress - WordCamp Atlanta 2014
V2 and beyond
V2 and beyond
Tips and tricks for building api heavy ruby on rails applications
Tips and tricks for building api heavy ruby on rails applications
Looping the Loop with SPL Iterators
Looping the Loop with SPL Iterators
More tips n tricks
More tips n tricks
Perl6 grammars
Perl6 grammars
Como construir uma Aplicação que consuma e produza updates no Twitter usando ...
Como construir uma Aplicação que consuma e produza updates no Twitter usando ...
Viewers also liked
How to Pronounce Django
How to Pronounce Django
jtauber
Django for Beginners
Django for Beginners
Jason Davies
Chord melody method bill hart
Chord melody method bill hart
gretechen
Lenny breau-fingerstyle-jazz-guitar
Lenny breau-fingerstyle-jazz-guitar
gretechen
Jack marshall-bossanova-guitar-arrang compressed
Jack marshall-bossanova-guitar-arrang compressed
legalcards
(Guitar) partition pat martino jazz book
(Guitar) partition pat martino jazz book
Javier Santander Celedón
Best of jazz guitar
Best of jazz guitar
Nussá Produções Música ao Vivo
Viewers also liked
(7)
How to Pronounce Django
How to Pronounce Django
Django for Beginners
Django for Beginners
Chord melody method bill hart
Chord melody method bill hart
Lenny breau-fingerstyle-jazz-guitar
Lenny breau-fingerstyle-jazz-guitar
Jack marshall-bossanova-guitar-arrang compressed
Jack marshall-bossanova-guitar-arrang compressed
(Guitar) partition pat martino jazz book
(Guitar) partition pat martino jazz book
Best of jazz guitar
Best of jazz guitar
Similar to 伝説のギタリストじゃない方のDjango
Django Vs Rails
Django Vs Rails
Sérgio Santos
Django
Django
Mohamed Ramadan
Gae Meets Django
Gae Meets Django
fool2nd
Mini Curso Django Ii Congresso Academico Ces
Mini Curso Django Ii Congresso Academico Ces
Leonardo Fernandes
Hands on django part 1
Hands on django part 1
MicroPyramid .
DJango
DJango
Sunil OS
GDG Addis - An Introduction to Django and App Engine
GDG Addis - An Introduction to Django and App Engine
Yared Ayalew
Introduction to django
Introduction to django
Ilian Iliev
Practical Celery
Practical Celery
Cameron Maske
templates in Django material : Training available at Baabtra
templates in Django material : Training available at Baabtra
baabtra.com - No. 1 supplier of quality freshers
Django
Django
Harmeet Lamba
Intro to Pylons / Pyramid
Intro to Pylons / Pyramid
Eric Paxton
Introduction to Django
Introduction to Django
Jagdeep Singh Malhi
Django web framework
Django web framework
Abdenour Bouateli
나도 할 수 있다 오픈소스
나도 할 수 있다 오픈소스
효준 강
Django Introduction & Tutorial
Django Introduction & Tutorial
之宇 趙
Practical catalyst
Practical catalyst
dwm042
Pemrograman Python untuk Pemula
Pemrograman Python untuk Pemula
Oon Arfiandwi
Profile django
Profile django
Tim (文昌)
Europython 2011 - Playing tasks with Django & Celery
Europython 2011 - Playing tasks with Django & Celery
Mauro Rocco
Similar to 伝説のギタリストじゃない方のDjango
(20)
Django Vs Rails
Django Vs Rails
Django
Django
Gae Meets Django
Gae Meets Django
Mini Curso Django Ii Congresso Academico Ces
Mini Curso Django Ii Congresso Academico Ces
Hands on django part 1
Hands on django part 1
DJango
DJango
GDG Addis - An Introduction to Django and App Engine
GDG Addis - An Introduction to Django and App Engine
Introduction to django
Introduction to django
Practical Celery
Practical Celery
templates in Django material : Training available at Baabtra
templates in Django material : Training available at Baabtra
Django
Django
Intro to Pylons / Pyramid
Intro to Pylons / Pyramid
Introduction to Django
Introduction to Django
Django web framework
Django web framework
나도 할 수 있다 오픈소스
나도 할 수 있다 오픈소스
Django Introduction & Tutorial
Django Introduction & Tutorial
Practical catalyst
Practical catalyst
Pemrograman Python untuk Pemula
Pemrograman Python untuk Pemula
Profile django
Profile django
Europython 2011 - Playing tasks with Django & Celery
Europython 2011 - Playing tasks with Django & Celery
More from makoto tsuyuki
スゴイ django - Python&Djangoで始めるWeb開発 in 札幌 #1
スゴイ django - Python&Djangoで始めるWeb開発 in 札幌 #1
makoto tsuyuki
Erulolo at Kamakurago #1
Erulolo at Kamakurago #1
makoto tsuyuki
Not free
Not free
makoto tsuyuki
Testman
Testman
makoto tsuyuki
Webフレームワークパネル(Django) at PyConJP 2012
Webフレームワークパネル(Django) at PyConJP 2012
makoto tsuyuki
引き出しとしてのDjango - SoozyCon7
引き出しとしてのDjango - SoozyCon7
makoto tsuyuki
Python Workshop the Edge - django
Python Workshop the Edge - django
makoto tsuyuki
変態的PHPフレームワーク rhaco
変態的PHPフレームワーク rhaco
makoto tsuyuki
継承だろJK
継承だろJK
makoto tsuyuki
More from makoto tsuyuki
(9)
スゴイ django - Python&Djangoで始めるWeb開発 in 札幌 #1
スゴイ django - Python&Djangoで始めるWeb開発 in 札幌 #1
Erulolo at Kamakurago #1
Erulolo at Kamakurago #1
Not free
Not free
Testman
Testman
Webフレームワークパネル(Django) at PyConJP 2012
Webフレームワークパネル(Django) at PyConJP 2012
引き出しとしてのDjango - SoozyCon7
引き出しとしてのDjango - SoozyCon7
Python Workshop the Edge - django
Python Workshop the Edge - django
変態的PHPフレームワーク rhaco
変態的PHPフレームワーク rhaco
継承だろJK
継承だろJK
Recently uploaded
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
Scott Keck-Warren
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
Rizwan Syed
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
The Digital Insurer
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Safe Software
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
charlottematthew16
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
UiPathCommunity
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
gvaughan
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
Slibray Presentation
Training state-of-the-art general text embedding
Training state-of-the-art general text embedding
Zilliz
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
comworks
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Patryk Bandurski
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
Fwdays
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
Florian Wilhelm
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Wonjun Hwang
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
Manik S Magar
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
Lorenzo Miniero
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
Alex Barbosa Coqueiro
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
charlottematthew16
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
BookNet Canada
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
ScyllaDB
Recently uploaded
(20)
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
Training state-of-the-art general text embedding
Training state-of-the-art general text embedding
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
伝説のギタリストじゃない方のDjango
1.
Django
2.
Django biography Django Reinhardt 1910
Django 2003 2005 7 Rails discography www.ljworld.com www.lawrence.com projects.washingtonpost.com/contress/
3.
main features
4.
main features O/R Mapper Automatic
Admin Interface Elegant URL Design Template Cache i18n
5.
O/R Mapper
6.
O/R Mapper DRY Model
7.
O/R Mapper DRY Model
Model Database
8.
O/R Mapper DRY Model
Model Database SQLObject SELECT keyword args ForeignKey model Index Model
9.
Automatic Admin I/F
10.
Automatic Admin I/F model rails
scafford TurboGears catwalk
11.
Automatic Admin I/F model rails
scafford TurboGears catwalk
12.
Automatic Admin I/F model rails
scafford TurboGears catwalk
13.
Elegant URL Desgin
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.
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.
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.
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.
Template
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.
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.
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.
cache
23.
cache
3 HTTP
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.
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.
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.
i18n
28.
i18n po
settings.py Automatic Admin I/F
29.
i18n
po settings.py Automatic Admin I/F code _(“message”) {% trans “message” %} template
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.
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.
Python2.3 Apache2.x+mod_python3.x fast-cgi(WSGI)
PostgreSQL/MySQL/SQLite3/SQLServer
33.
Project Django Model URL view Template
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.
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.
Project django-admin.py startproject WorkStyle
WorkStyle + apps __init__.py __init__.py urls.py settings.py manage.py
37.
Project django-admin.py startproject WorkStyle
WorkStyle + apps __init__.py __init__.py urls.py settings.py manage.py Project
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Model python manage.py install
workstyle ## APPLICATION TABLE workstyle_tasks workstyle_tags workstyle_taglists workstyle_comments workstyle_attachments
49.
Model python manage.py install
workstyle ## APPLICATION TABLE workstyle_tasks workstyle_tags workstyle_taglists workstyle_comments workstyle_attachments
50.
Model python manage.py install
workstyle ## APPLICATION TABLE workstyle_tasks workstyle_tags workstyle_taglists workstyle_comments workstyle_attachments Class
51.
O/R
Python > export DJANGO_SETTINGS_MODULE=WorkStyle.settings > python
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.
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.
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.
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.
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.
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.
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'),
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.
> 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....})
62.
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)
63.
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)
64.
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)
65.
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)
66.
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."))
67.
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 :
68.
Template
settings.py Template > emacs Project/settings.py TEMPLATE_DIRS = ( WORKSTYLE_BASE_DIR + "/apps/workstyle/templates", )
69.
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
70.
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
71.
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
72.
> 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)
73.
> emacs Porject/apps/workstyle/task.py from
WorkStyle.apps.workstyle.templatetags import wsfilters
74.
> 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 }}
75.
Test
pyunit simon.bofh.ms
76.
Django Milestone 0.92 Magic 1.00
77.
www.everes.net
Editor's Notes
Pythonista&#x3092;&#x76EE;&#x6307;&#x3057;&#x3066;&#x3044;&#x307E;&#x3059;&#x3002; Python&#x306F;&#x4E00;&#x756A;&#x6577;&#x5C45;&#x306E;&#x9AD8;&#x3044;&#x8A00;&#x8A9E;&#x306A;&#x306E;&#x3067;&#x3001;&#x5230;&#x9054;&#x306F;&#x56F0;&#x96E3;&#x3060;&#x3068;&#x304A;&#x3082;&#x3063;&#x3066;&#x3044;&#x307E;&#x3059;&#x3002; &#x4F55;&#x3067;&#x56F0;&#x96E3;&#x304B;&#x3068;&#x3044;&#x3046;&#x3068;&#x3001;&#x8077;&#x5834;&#x3067;&#x306F;Python&#x306E;&#x30B3;&#x30FC;&#x30C9;&#x304C;&#x66F8;&#x3051;&#x308B;&#x307B;&#x304B;&#x306B;&#x3082;&#x300C;&#x30C7;&#x30B6;&#x30A4;&#x30F3;&#x304C;&#x3059;&#x3089;&#x3063;&#x3068;&#x7F8E;&#x3057;&#x304F;&#x3067;&#x304D;&#x308B;&#x300D;&#x300C;&#x6839;&#x6027;&#x7CFB;&#x3067;&#x306A;&#x3044;&#x30A2;&#x30A6;&#x30C8;&#x30C9;&#x30A2;&#x3063;&#x307D;&#x3044;&#x30B9;&#x30DD;&#x30FC;&#x30C4;&#x304C;&#x51FA;&#x6765;&#x308B;&#x300D;&#x3053;&#x3068;&#x3092;Pythonista&#x306E;&#x8981;&#x4EF6;&#x3068;&#x3057;&#x3066;&#x3044;&#x308B;&#x304B;&#x3089;&#x3067;&#x3059;&#x3002; &#x3067;&#x3001;Django&#x3067;&#x3059;&#x3002;Python&#x306E;Web&#x30D5;&#x30EC;&#x30FC;&#x30E0;&#x30EF;&#x30FC;&#x30AF;&#x3067;&#x3059;&#x3002;&#x30E9;&#x30A4;&#x30BB;&#x30F3;&#x30B9;&#x306F;BSD&#x3002;
Django&#x3092;&#x30B0;&#x30B0;&#x30EB;&#x3068;&#x3001;&#x4E0A;&#x4F4D;&#x306F;Django Reinhardt&#x306B;&#x95A2;&#x3059;&#x308B;&#x3082;&#x306E;&#x3070;&#x304B;&#x308A;&#x3067;&#x3066;&#x304D;&#x307E;&#x3059;&#x3002;&#x6D41;&#x77F3;&#x306B;&#x672C;&#x5BB6;&#x306F;&#x30DA;&#x30FC;&#x30B8;&#x30E9;&#x30F3;&#x30AF;&#x304C;&#x4E0A;&#x304C;&#x3063;&#x3066;&#x304B;&#x306A;&#x308A;&#x4E0A;&#x4F4D;&#x306B;&#x51FA;&#x3066;&#x304F;&#x308B;&#x3088;&#x3046;&#x306B;&#x306A;&#x308A;&#x307E;&#x3057;&#x305F;&#x3001;&#x79C1;&#x306E;&#x30D6;&#x30ED;&#x30B0;&#x306F;&#x3042;&#x307E;&#x308A;&#x4E0A;&#x306B;&#x304D;&#x307E;&#x305B;&#x3093;&#x3002; &#x3088;&#x304F;Django&#x306F;after Rails&#x3068;&#x3057;&#x3066;&#x30EA;&#x30B9;&#x30C8;&#x3055;&#x308C;&#x307E;&#x3059;&#x304C;&#x3001;&#x958B;&#x767A;&#x81EA;&#x4F53;&#x306F;Rails&#x3068;&#x540C;&#x6642;&#x671F;&#x306B;&#x958B;&#x59CB;&#x3055;&#x308C;&#x3066;&#x3044;&#x307E;&#x3059;&#x3002; Django&#x306F;&#x5730;&#x65B9;&#x65B0;&#x805E;&#x306E;&#x30B5;&#x30A4;&#x30C8;&#x69CB;&#x7BC9;&#x306E;&#x305F;&#x3081;&#x306B;&#x4F5C;&#x308A;&#x4E0A;&#x3052;&#x3089;&#x308C;&#x3066;&#x304D;&#x305F;&#x30D5;&#x30EC;&#x30FC;&#x30E0;&#x30EF;&#x30FC;&#x30AF;&#x306A;&#x306E;&#x3067;&#x3001;CMS&#x7684;&#x306A;&#x3082;&#x306E;&#x306B;&#x5BFE;&#x3059;&#x308B;&#x5074;&#x9762;&#x306F;&#x975E;&#x5E38;&#x306B;&#x5F37;&#x3044;&#x3067;&#x3059;&#x3002;&#x30EF;&#x30B7;&#x30F3;&#x30C8;&#x30F3;&#x30DD;&#x30B9;&#x30C8;&#x306E;&#x6570;&#x767E;&#x4E07;&#x4EF6;&#x306E;&#x30C7;&#x30FC;&#x30BF;&#x3092;&#x4FDD;&#x6301;&#x3057;&#x3066;&#x3044;&#x308B;&#x8B70;&#x6C7A;&#x30C7;&#x30FC;&#x30BF;&#x30D9;&#x30FC;&#x30B9;&#x30B5;&#x30A4;&#x30C8;&#x306B;&#x3082;&#x5229;&#x7528;&#x3055;&#x308C;&#x3066;&#x3044;&#x307E;&#x3059;&#x3002;&#x30EF;&#x30B7;&#x30F3;&#x30C8;&#x30F3;&#x30DD;&#x30B9;&#x30C8;&#x306B;&#x306F;&#x6700;&#x8FD1;&#x65B0;&#x3057;&#x3044;Django&#x3067;&#x3067;&#x304D;&#x305F;&#x30A2;&#x30D7;&#x30EA;&#x30B1;&#x30FC;&#x30B7;&#x30E7;&#x30F3;&#x304C;&#x5897;&#x3048;&#x305F;&#x305D;&#x3046;&#x306A;&#x306E;&#x3067;&#x3001;&#x30EF;&#x30B7;&#x30F3;&#x30C8;&#x30F3;&#x30DD;&#x30B9;&#x30C8;&#x306B;&#x306F;&#x6C17;&#x306B;&#x5165;&#x3089;&#x308C;&#x305F;&#x3088;&#x3046;&#x3067;&#x3059;&#x3002;
Web&#x30A2;&#x30D7;&#x30EA;&#x30B1;&#x30FC;&#x30B7;&#x30E7;&#x30F3;&#x30D5;&#x30EC;&#x30FC;&#x30E0;&#x30EF;&#x30FC;&#x30AF;&#x306B;&#x306F;&#x7121;&#x3044;&#x3068;&#x306F;&#x3044;&#x3048;&#x306A;&#x304F;&#x306A;&#x3063;&#x3066;&#x304D;&#x305F;O/R&#x30DE;&#x30C3;&#x30D4;&#x30F3;&#x30B0;&#x3068;&#x304B;&#x3001;Django&#x306E;&#x30B5;&#x30A4;&#x30C8;&#x3067;&#x30E1;&#x30A4;&#x30F3;&#x6A5F;&#x80FD;&#x3068;&#x3055;&#x308C;&#x3066;&#x3044;&#x308B;&#x7269;&#x305F;&#x3061;&#x3092;&#x30EA;&#x30B9;&#x30C8;&#x3057;&#x3066;&#x307F;&#x307E;&#x3057;&#x305F;&#x3002; &#x65B0;&#x805E;&#x7CFB;&#x30B5;&#x30A4;&#x30C8;&#x306A;&#x306E;&#x3067;&#x30AD;&#x30E3;&#x30C3;&#x30B7;&#x30E5;&#x306F;&#x7279;&#x306B;&#x529B;&#x304C;&#x5165;&#x3063;&#x3066;&#x3044;&#x307E;&#x3059;&#x3002;&#x3053;&#x3053;&#x306E;&#x3068;&#x3053;&#x308D;&#x696D;&#x52D9;&#x30B7;&#x30B9;&#x30C6;&#x30E0;&#x3092;&#x3084;&#x3063;&#x3066;&#x3044;&#x308B;&#x81EA;&#x5206;&#x3068;&#x3057;&#x3066;&#x306F;&#x3001;&#x963F;&#x5446;&#x3068;&#x3057;&#x304B;&#x601D;&#x3048;&#x306A;&#x3044;&#x30AD;&#x30E3;&#x30C3;&#x30B7;&#x30E5;&#x304C;&#x3042;&#x308A;&#x307E;&#x3059;&#x3002; i18n&#x306F;&#x30AA;&#x30FC;&#x30D7;&#x30F3;&#x30BD;&#x30FC;&#x30B9;&#x5316;&#x3057;&#x3066;&#x3059;&#x3050;&#x306B;&#x53D6;&#x308A;&#x5165;&#x308C;&#x3089;&#x308C;&#x3066;&#x3044;&#x308B;&#x306E;&#x3067;&#x3001;Admin Interface&#x306A;&#x3069;&#x304C;&#x65E2;&#x306B;&#x6570;&#x5341;&#x30AB;&#x56FD;&#x8A9E;&#x306B;&#x5BFE;&#x5FDC;&#x3057;&#x3066;&#x3044;&#x307E;&#x3059;&#x3002; &#x65E5;&#x672C;&#x8A9E;&#x3082;&#x602A;&#x3057;&#x3044;&#x8A33;&#x306E;&#x3082;&#x306E;&#x304C;&#x6700;&#x8FD1;&#x306E;&#x7248;&#x306B;&#x306F;&#x5165;&#x3063;&#x3066;&#x3044;&#x307E;&#x3059;&#x3002;
DRY&#x306E;&#x539F;&#x5247;&#x3068;&#x3044;&#x3046;&#x306E;&#x306F;&#x3001;&#x30C9;&#x30E1;&#x30A4;&#x30F3;&#x30E2;&#x30C7;&#x30EB;&#x306B;&#x95A2;&#x3059;&#x308B;&#x60C5;&#x5831;&#x306F;&#x5168;&#x3066;&#x4E00;&#x30AB;&#x6240;&#x306B;&#x5B58;&#x5728;&#x3059;&#x308B;&#x3079;&#x304D;&#x3068;&#x3059;&#x308B;&#x3082;&#x306E;&#x3067;&#x3059;&#x3002;&#x30C7;&#x30FC;&#x30BF;&#x30D9;&#x30FC;&#x30B9;&#x306E;ER&#x56F3;&#x3084;&#x3089;XML&#x306E;&#x8A2D;&#x5B9A;&#x30D5;&#x30A1;&#x30A4;&#x30EB;&#x3084;&#x3089;&#x3001;&#x30BD;&#x30FC;&#x30B9;&#x30B3;&#x30FC;&#x30C9;&#x3084;&#x3089;&#x306B;&#x8A2D;&#x5B9A;&#x304C;&#x5206;&#x6563;&#x3059;&#x3079;&#x304D;&#x3067;&#x306A;&#x3044;&#x3068;&#x3044;&#x3046;&#x3053;&#x3068;&#x3067;&#x3059;&#x3002; Rails&#x306E;&#x30C7;&#x30FC;&#x30BF;&#x30D9;&#x30FC;&#x30B9;&#x3092;&#x57FA;&#x672C;&#x3068;&#x3059;&#x308B;&#x30A2;&#x30D7;&#x30ED;&#x30FC;&#x30C1;&#x3068;&#x306F;&#x53CD;&#x5BFE;&#x306B;&#x3001;Django&#x306F;model&#x3092;&#x57FA;&#x672C;&#x3068;&#x3057;&#x305F;&#x30A2;&#x30D7;&#x30ED;&#x30FC;&#x30C1;&#x3092;&#x884C;&#x3044;&#x307E;&#x3059;&#x3002; &#x305F;&#x3060;&#x3057;Model&#x30D9;&#x30FC;&#x30B9;&#x306E;DRY&#x306F;&#x3042;&#x304F;&#x307E;&#x3067;&#x539F;&#x5247;&#x306A;&#x306E;&#x3067;&#x3001;&#x30EC;&#x30AC;&#x30B7;&#x30FC;&#x306A;&#x30C7;&#x30FC;&#x30BF;&#x30D9;&#x30FC;&#x30B9;&#x3068;&#x9023;&#x643A;&#x3059;&#x308B;&#x5834;&#x5408;&#x7528;&#x306B;&#x3001;&#x30EA;&#x30D0;&#x30FC;&#x30B9;(inspectdb)&#x3082;&#x2019;&#x4E00;&#x5FDC;&#x2019;&#x7528;&#x610F;&#x3055;&#x308C;&#x3066;&#x3044;&#x307E;&#x3059;&#x3002; &#x30E6;&#x30CB;&#x30FC;&#x30AF;&#x30AD;&#x30FC;&#x3084;Index&#x306E;&#x8A2D;&#x5B9A;&#x307E;&#x3067;&#x3082;Model&#x306B;&#x8A18;&#x8FF0;&#x3067;&#x304D;&#x307E;&#x3059;&#x3002; &#x73FE;&#x6642;&#x70B9;&#x3067;&#x306F;&#x9ED2;&#x9B54;&#x8853;&#x7684;&#x306A;&#x90E8;&#x5206;&#x304C;&#x3042;&#x308A;&#x307E;&#x3059;&#x304C;&#x3001;&#x30D0;&#x30FC;&#x30B8;&#x30E7;&#x30F3;0.92&#x3067;&#x306F;&#x591A;&#x304F;&#x306E;&#x9ED2;&#x9B54;&#x8853;&#x304C;&#x53D6;&#x308A;&#x9664;&#x304B;&#x308C;&#x307E;&#x3059;&#x306E;&#x3067;&#x3001;&#x30B3;&#x30FC;&#x30C9;&#x304B;&#x3089;&#x8FFD;&#x3048;&#x306A;&#x3044;&#x3082;&#x306E;&#x304C;&#x5ACC;&#x3044;&#x306A;&#x4EBA;&#x3082;&#x5927;&#x4E08;&#x592B;&#x3067;&#x3059;&#x3002;
&#x306A;&#x304B;&#x306A;&#x304B;&#x7F8E;&#x3057;&#x3044;&#x3002; &#x64CD;&#x4F5C;&#x30D5;&#x30ED;&#x30FC;&#x306E;&#x7F8E;&#x3057;&#x3055;&#x306F;TurboGears&#x306E;AJAX&#x3092;&#x4F7F;&#x7528;&#x3057;&#x305F;&#x30D1;&#x30BF;&#x30FC;&#x30F3;&#x306B;&#x6575;&#x3044;&#x307E;&#x305B;&#x3093;&#x304C;&#x898B;&#x305F;&#x76EE;&#x306F;&#x304D;&#x3063;&#x3068;&#x4E00;&#x756A;&#x7F8E;&#x3057;&#x3044;&#x3067;&#x3059;&#x3002; model&#x3067;&#x8A18;&#x8FF0;&#x3057;&#x305F;&#x5236;&#x9650;&#x306F;&#x81EA;&#x52D5;&#x3067;&#x30D0;&#x30EA;&#x30C7;&#x30FC;&#x30BF;&#x304C;&#x9069;&#x7528;&#x3055;&#x308C;&#x307E;&#x3059;&#x306E;&#x3067;&#x3001;model&#x3067;&#x8868;&#x73FE;&#x3067;&#x304D;&#x308B;&#x5236;&#x9650;&#x306E;&#x307F;&#x306E;&#x30C7;&#x30FC;&#x30BF;&#x7BA1;&#x7406;&#x753B;&#x9762;&#x306F;&#x81EA;&#x52D5;&#x3067;&#x51FA;&#x6765;&#x308B;&#x7269;&#x3067;&#x5341;&#x5206;&#x3067;&#x3057;&#x3087;&#x3046;&#x3002;&#x95A2;&#x9023;&#x3082;&#x3001;&#x3042;&#x308B;&#x7A0B;&#x5EA6;&#x306E;&#x691C;&#x7D22;&#x3082;&#x5BB9;&#x6613;&#x306B;&#x8A2D;&#x5B9A;&#x3067;&#x304D;&#x307E;&#x3059;&#x3002; &#x3042;&#x3068;&#x3067;&#x6642;&#x9593;&#x304C;&#x3042;&#x308C;&#x3070;&#x753B;&#x9762;&#x3092;&#x304A;&#x898B;&#x305B;&#x3057;&#x307E;&#x3059;&#x3002;
Zope&#x3068;&#x304B;&#x3092;&#x5229;&#x7528;&#x3055;&#x308C;&#x3066;&#x3044;&#x308B;&#x65B9;&#x306E;&#x5834;&#x5408;&#x306F;&#x3001;&#x898B;&#x6163;&#x308C;&#x305F;URL&#x3060;&#x3068;&#x601D;&#x3044;&#x307E;&#x3059;&#x3002; &#x6B63;&#x898F;&#x8868;&#x73FE;&#x3067;&#x8A18;&#x8FF0;&#x3092;&#x3057;&#x3001;&#x30DE;&#x30C3;&#x30C1;&#x3057;&#x305F;&#x5F15;&#x6570;&#x3092;&#x30B3;&#x30F3;&#x30C8;&#x30ED;&#x30FC;&#x30E9;&#x306B;&#x3042;&#x305F;&#x308B;&#x30D5;&#x30A1;&#x30F3;&#x30AF;&#x30B7;&#x30E7;&#x30F3;&#x306B;&#x6E21;&#x3057;&#x307E;&#x3059;&#x3002; urls.py&#x306B;&#x30DE;&#x30C3;&#x30C1;&#x3057;&#x306A;&#x3044;&#x5834;&#x5408;&#x306F;HTTP&#x306E;404&#x30A8;&#x30E9;&#x30FC;&#x304C;&#x767A;&#x751F;&#x3057;&#x307E;&#x3059;&#x3002; &#x5F8C;&#x3067;&#x8AAC;&#x660E;&#x3059;&#x308B;&#x30AD;&#x30E3;&#x30C3;&#x30B7;&#x30E5;&#x3067;&#x91CD;&#x8981;&#x306B;&#x306A;&#x3063;&#x3066;&#x304F;&#x308B;&#x306E;&#x3067;&#x3001;Elegant&#x306B;&#x3057;&#x3066;&#x304A;&#x304D;&#x307E;&#x3057;&#x3087;&#x3046;&#x3002;
Plone&#x306E;METAL&#x3068;&#x9055;&#x3063;&#x3066;&#x3001;HTML&#x304C;&#x58CA;&#x308C;&#x308B;&#x30BF;&#x30A4;&#x30D7;&#x306E;&#x30C6;&#x30F3;&#x30D7;&#x30EC;&#x30FC;&#x30C8;&#x3067;&#x3059;&#x3002; Django&#x30D7;&#x30ED;&#x30B8;&#x30A7;&#x30AF;&#x30C8;&#x306E;&#x4EBA;&#x3068;&#x3057;&#x3066;&#x306F;&#x3001;&#x300C;&#x30C7;&#x30B6;&#x30A4;&#x30CA;&#x30FC;&#x3082;&#x99AC;&#x9E7F;&#x306B;&#x305B;&#x305A;&#x306B;&#x3061;&#x3087;&#x3063;&#x3068;&#x6559;&#x3048;&#x308C;&#x3070;&#x3001;&#x30B3;&#x30FC;&#x30C9;&#x307E;&#x3067;&#x66F8;&#x304D;&#x51FA;&#x3059;&#x306F;&#x305A;&#x300D;&#x3068;&#x3044;&#x3046;&#x601D;&#x60F3;&#x3067;&#x3001;&#x4E8B;&#x5B9F;&#x5F7C;&#x3089;&#x306E;&#x5468;&#x308A;&#x306E;&#x30C7;&#x30B6;&#x30A4;&#x30CA;&#x30FC;&#x306F;&#x30C6;&#x30F3;&#x30D7;&#x30EC;&#x30FC;&#x30C8;&#x3092;&#x4F7F;&#x3044;&#x3053;&#x306A;&#x3057;&#x3066;&#x3044;&#x308B;&#x3088;&#x3046;&#x3067;&#x3059;&#x3002; &#x500B;&#x4EBA;&#x7684;&#x306B;&#x306F;&#x300C;&#x30C6;&#x30F3;&#x30D7;&#x30EC;&#x30FC;&#x30C8;&#x306E;&#x7D99;&#x627F;&#x300D;&#x3068;&#x3044;&#x3046;&#x306E;&#x306F;&#x597D;&#x304D;&#x3067;&#x306F;&#x306A;&#x3044;&#x3093;&#x3067;&#x3059;&#x304C;&#x3001;&#x4F3C;&#x3066;&#x3044;&#x3066;&#x5C11;&#x3057;&#x9055;&#x3046;&#x3068;&#x8A00;&#x3063;&#x305F;&#x30C6;&#x30F3;&#x30D7;&#x30EC;&#x30FC;&#x30C8;&#x306F;&#x7D99;&#x627F;&#x3057;&#x305F;&#x65B9;&#x304C;&#x3044;&#x3044;&#x5834;&#x9762;&#x3082;&#x3042;&#x308B;&#x3067;&#x3057;&#x3087;&#x3046;&#x3002;
&#x30B5;&#x30A4;&#x30C8;&#x5168;&#x4F53;&#x3092;&#x30AD;&#x30E3;&#x30C3;&#x30B7;&#x30E5;&#x3059;&#x308B;&#x8A2D;&#x5B9A;&#x306B;&#x3059;&#x308B;&#x306E;&#x306F;&#x3001;settings.py&#x306B;&#xFF13;&#x884C;&#x8FFD;&#x52A0;&#x3059;&#x308B;&#x3060;&#x3051;&#x3067;&#x3059;&#x3002; &#x30B3;&#x30F3;&#x30C8;&#x30ED;&#x30FC;&#x30E9;&#x306B;&#x3059;&#x3053;&#x3057;&#x30B3;&#x30FC;&#x30C9;&#x3092;&#x8FFD;&#x52A0;&#x3059;&#x308C;&#x3070;&#x7D30;&#x304B;&#x304F;&#x8A2D;&#x5B9A;&#x3059;&#x308B;&#x3053;&#x3068;&#x3082;&#x51FA;&#x6765;&#x307E;&#x3059;&#x3002; URL&#x306E;&#x8A2D;&#x8A08;&#x304C;&#x91CD;&#x8981;&#x306A;&#x306E;&#x306F;&#x3001;GET/POST&#x306E;&#x30C7;&#x30FC;&#x30BF;&#x304C;&#x3042;&#x308B;&#x5834;&#x5408;&#x306B;&#x306F;&#x30AD;&#x30E3;&#x30C3;&#x30B7;&#x30E5;&#x3092;&#x5229;&#x7528;&#x3057;&#x306A;&#x3044;&#x305F;&#x3081;&#x3002;ElegantURL&#x306B;&#x3057;&#x306A;&#x3044;&#x3068;&#x307B;&#x3068;&#x3093;&#x3069;&#x30AD;&#x30E3;&#x30C3;&#x30B7;&#x30E5;&#x304C;&#x52B9;&#x304B;&#x306A;&#x3044;&#x3067;&#x3057;&#x3087;&#x3046;&#x3002;&#x4F1A;&#x54E1;50&#x4E07;&#x4EBA;&#x3001;&#x5E38;&#x6642;2&#x4E07;&#x30BB;&#x30C3;&#x30B7;&#x30E7;&#x30F3;&#x3068;&#x3044;&#x3046;&#x898F;&#x6A21;&#x306E;&#x30DD;&#x30FC;&#x30E9;&#x30F3;&#x30C9;&#xFF1F;&#x306E;SNS&#x3067;&#x306F;tomcat&#x30B5;&#x30FC;&#x30D0;&#xFF14;&#x53F0;&#x304B;&#x3089;Django&#x30B5;&#x30FC;&#x30D0;&#xFF11;&#x53F0;&#x306B;&#x30EA;&#x30D7;&#x30EC;&#x30FC;&#x30B9;&#x3057;&#x305F;&#x3068;&#x3044;&#x3046;&#x3053;&#x3068;&#x3067;&#x3059;&#x3002;
&#x30AD;&#x30E3;&#x30C3;&#x30B7;&#x30E5;&#x306F;locmem&#x306E;&#x4ED6;&#x306B;&#x3082;&#x3001;memcach&#x3084;db,file&#x304C;&#x3042;&#x308A;&#x307E;&#x3059;&#x3002; memcash&#x306F;&#x672C;&#x5BB6;&#x30B9;&#x30E9;&#x30C9;&#x3082;&#x4F7F;&#x7528;&#x3057;&#x3066;&#x3044;&#x308B;&#x6A21;&#x69D8;&#x3067;&#x3059;&#x3002;&#x30B9;&#x30BF;&#x30C6;&#x30A3;&#x30C3;&#x30AF;&#x30D5;&#x30A1;&#x30A4;&#x30EB;&#x306E;&#x66F8;&#x304D;&#x51FA;&#x3057;&#x3068;&#x304B;memcash&#x3092;&#x4F7F;&#x3046;&#x3088;&#x3046;&#x306A;&#x72EC;&#x81EA;&#x5B9F;&#x88C5;&#x3068;&#x304B;&#x304C;&#x5FC5;&#x8981;&#x306A;&#x304F;&#x3001;&#x30D3;&#x30E5;&#x30FC;&#x6BCE;&#x306B;&#x30AD;&#x30E3;&#x30C3;&#x30B7;&#x30E5;&#x3059;&#x308B;&#x304B;&#x3069;&#x3046;&#x304B;&#x306E;&#x5236;&#x5FA1;&#x3092;&#x3059;&#x308B;&#x5834;&#x5408;&#x3082;&#x5404;&#x30D3;&#x30E5;&#x30FC;&#x306B;&#xFF11;&#x30FB;&#xFF12;&#x884C;&#x8A18;&#x8FF0;&#x3059;&#x308B;&#x3060;&#x3051;&#x306A;&#x306E;&#x3067;&#x3001;&#x958B;&#x767A;&#x306F;&#x975E;&#x5E38;&#x306B;&#x697D;&#x3060;&#x3068;&#x304A;&#x3082;&#x3044;&#x307E;&#x3059;&#x3002;&#x5B9F;&#x969B;&#x306F;&#x3044;&#x308D;&#x3044;&#x308D;&#x3068;URL&#x7B49;&#x306E;&#x8A2D;&#x8A08;&#x304C;&#x5FC5;&#x8981;&#x3067;&#x3057;&#x3087;&#x3046;&#x304C;&#x3002;
python&#x306E;&#x4EBA;&#x306B;&#x306F;&#x898B;&#x6163;&#x308C;&#x3066;&#x3044;&#x308B;&#x3067;&#x3042;&#x308D;&#x3046;&#x3001;po&#x3092;&#x4F7F;&#x3044;&#x307E;&#x3059;&#x3002; &#x56FD;&#x969B;&#x5316;&#x7528;&#x306E;&#x30B3;&#x30FC;&#x30C9;&#x306E;&#x8A18;&#x8FF0;&#x306F;&#x7C21;&#x5358;&#x3067;&#x3059;&#x3002; po&#x3001;mo&#x306F;&#x3053;&#x3093;&#x306A;&#x611F;&#x3058;&#x306B;&#x4F5C;&#x308A;&#x307E;&#x3059;&#x3002;getText&#x3068;&#x3044;&#x3046;&#x30E9;&#x30A4;&#x30D6;&#x30E9;&#x30EA;&#x304C;&#x5FC5;&#x8981;&#x306A;&#x306E;&#x3067;&#x3001;&#x30A6;&#x30A3;&#x30F3;&#x30C9;&#x30A6;&#x30BA;&#x3067;&#x306F;&#x9762;&#x5012;&#x304B;&#x3082;&#x3057;&#x308C;&#x306A;&#x3044;&#x3002;&#x30B3;&#x30FC;&#x30C9;&#x66F8;&#x304D;&#x3084;&#x52D5;&#x4F5C;&#x306B;&#x306F;&#x5FC5;&#x8981;&#x306A;&#x3044;&#x306E;&#x3067;&#x3001;&#x307E;&#x3068;&#x3081;&#x3066;xUnix&#x7CFB;&#x306E;OS&#x3067;&#x3084;&#x3063;&#x305F;&#x65B9;&#x304C;&#x697D;&#x3002;OSX&#x3055;&#x3044;&#x3053;&#x30FC;&#x3002; plone&#x3068;&#x304B;&#x306E;&#x3088;&#x3046;&#x306B;accept-language&#x3067;&#x8A00;&#x8A9E;&#x3092;&#x5207;&#x308A;&#x66FF;&#x3048;&#x305F;&#x308A;&#x3001;session&#x3084;cookie&#x306E;&#x7279;&#x5B9A;&#x306E;&#x5024;&#x3092;&#x3082;&#x306E;&#x306B;&#x8A00;&#x8A9E;&#x3092;&#x5207;&#x308A;&#x66FF;&#x3048;&#x305F;&#x308A;&#x51FA;&#x6765;&#x307E;&#x3059;&#x3002;
&#x3053;&#x3053;&#x307E;&#x3067;&#x3067;&#x3001;Django&#x306B;&#x8208;&#x5473;&#x304C;&#x308F;&#x3044;&#x305F;&#x306F;&#x305A;&#x306A;&#x306E;&#x3067;&#x3001;&#x5B9F;&#x969B;&#x7684;&#x306A;&#x8A71;&#x306B;&#x3046;&#x3064;&#x308A;&#x307E;&#x3059;&#x3002; mod_python&#x306E;3.x&#x304C;&#x5FC5;&#x8981;&#x306A;&#x306E;&#x3067;&#x3001;apache&#x306E;&#x30D0;&#x30FC;&#x30B8;&#x30E7;&#x30F3;&#x3082;2.x&#x3067;&#x3059;&#x3002; lighttpd&#x3068;fast-cgi&#x3068;&#x3044;&#x3046;&#x624B;&#x3082;&#x3042;&#x308A;&#x307E;&#x3059;&#x3002; &#x5BFE;&#x5FDC;&#x30C7;&#x30FC;&#x30BF;&#x30D9;&#x30FC;&#x30B9;&#x306E;&#x3001;SQLServer&#x306F;&#x73FE;&#x6642;&#x70B9;&#x3067;&#x306F;ADO_MS_SQLServer&#x9650;&#x5B9A;&#x3067;&#x3059;&#x3002;&#x3088;&#x304F;&#x610F;&#x5473;&#x306F;&#x308F;&#x304B;&#x308A;&#x307E;&#x305B;&#x3093;&#x304C;&#x3001;&#x9650;&#x5B9A;&#x3067;&#x3059;&#x3002; Oracle&#x306B;&#x95A2;&#x3057;&#x3066;&#x306F;&#x4EE5;&#x524D;&#x30D1;&#x30C3;&#x30C1;&#x3092;&#x898B;&#x304B;&#x3051;&#x307E;&#x3057;&#x305F;&#x304C;&#x3001;&#x4F7F;&#x3048;&#x308B;&#x304B;&#x3069;&#x3046;&#x304B;&#x306F;&#x4E0D;&#x660E;&#x3067;&#x3059;&#x3002;
&#x5B9F;&#x969B;&#x306E;&#x958B;&#x767A;&#x306F;&#x3001;&#x30D7;&#x30ED;&#x30B8;&#x30A7;&#x30AF;&#x30C8;&#x306E;&#x958B;&#x59CB;&#x304B;&#x3089;&#x3057;&#x306A;&#x3051;&#x308C;&#x3070;&#x3044;&#x3051;&#x306A;&#x3044;&#x3053;&#x3068;&#x304C;&#x6C7A;&#x307E;&#x3063;&#x3066;&#x3044;&#x307E;&#x3059;&#x3002; &#x30D5;&#x30EC;&#x30FC;&#x30E0;&#x30EF;&#x30FC;&#x30AF;&#x3067;&#x3059;&#x304B;&#x3089;&#x3002;
&#x4E00;&#x3064;&#x306E;&#x30C7;&#x30FC;&#x30BF;&#x30D9;&#x30FC;&#x30B9;&#x306B;&#x5BFE;&#x3057;&#x3066;&#x3001;&#x4E00;&#x3064;&#x306E;Django-Core&#x30C7;&#x30FC;&#x30BF;&#x30D9;&#x30FC;&#x30B9;&#x304C;&#x5FC5;&#x8981;&#x3067;&#x3059;&#x3002;&#x305D;&#x308C;&#x3092;&#x7528;&#x610F;&#x3059;&#x308B;&#x305F;&#x3081;&#x306B;&#x306F;&#x3001;&#x30D7;&#x30ED;&#x30B8;&#x30A7;&#x30AF;&#x30C8;&#x3092;&#x958B;&#x59CB;&#x3057;&#x3066;&#x30C7;&#x30FC;&#x30BF;&#x30D9;&#x30FC;&#x30B9;&#x306E;&#x8A2D;&#x5B9A;&#x3092;&#x3059;&#x308B;&#x5FC5;&#x8981;&#x304C;&#x3042;&#x308A;&#x307E;&#x3059;&#x3002;&#x9806;&#x756A;&#x304C;&#x3061;&#x3087;&#x3063;&#x3068;&#x6C17;&#x6301;&#x3061;&#x60AA;&#x3044;&#x3067;&#x3059;&#x3002; &#x4E00;&#x5EA6;&#x30D7;&#x30ED;&#x30B8;&#x30A7;&#x30AF;&#x30C8;&#x3092;&#x958B;&#x59CB;&#x3057;&#x3066;&#x3057;&#x307E;&#x3048;&#x3070;&#x3001;&#x540C;&#x3058;&#x30C7;&#x30FC;&#x30BF;&#x30D9;&#x30FC;&#x30B9;&#x60C5;&#x5831;&#x3092;&#x5229;&#x7528;&#x3059;&#x308B;&#x30D7;&#x30ED;&#x30B8;&#x30A7;&#x30AF;&#x30C8;&#x3084;&#x3001;&#x305D;&#x306E;&#x30D7;&#x30ED;&#x30B8;&#x30A7;&#x30AF;&#x30C8;&#x306F;&#x4EE5;&#x4E0B;&#x306E;&#x30A2;&#x30D7;&#x30EA;&#x30B1;&#x30FC;&#x30B7;&#x30E7;&#x30F3;&#x306F;&#x540C;&#x4E00;Django-Core&#x30C7;&#x30FC;&#x30BF;&#x30D9;&#x30FC;&#x30B9;&#x3092;&#x5229;&#x7528;&#x3067;&#x304D;&#x308B;&#x3002;
&#x3068;&#x3070;&#x3059;&#x3002;&#x5909;&#x308F;&#x3063;&#x3066;&#x3044;&#x308B;&#x306E;&#x306F;&#x3001;&#x307E;&#x305A;Project&#x306E;&#x30A4;&#x30CB;&#x30B7;&#x30E3;&#x30E9;&#x30A4;&#x30BA;&#x3092;&#x3059;&#x308B;&#x3068;&#x3044;&#x3046;&#x6240;&#x3002; &#x30C7;&#x30FC;&#x30BF;&#x30D9;&#x30FC;&#x30B9;&#x306E;&#x60C5;&#x5831;&#x304C;&#x5FC5;&#x8981;&#x306A;&#x306E;&#x3067;&#x3001;init&#x3088;&#x308A;&#x3082;startproject&#x304C;&#x5148;&#x306A;&#x306E;&#x304C;&#x3061;&#x3087;&#x3063;&#x3068;&#x30A4;&#x30E1;&#x30FC;&#x30B8;&#x308F;&#x304D;&#x306B;&#x304F;&#x3044;&#x3068;&#x3053;&#x308D;&#x3067;&#x3059;&#x3002; &#x4E00;&#x3064;&#x306E;&#x30D7;&#x30ED;&#x30B8;&#x30A7;&#x30AF;&#x30C8;&#x3067;&#x8907;&#x6570;&#x306E;&#x30A2;&#x30D7;&#x30EA;&#x30B1;&#x30FC;&#x30B7;&#x30E7;&#x30F3;&#x3092;&#x4F5C;&#x308B;&#x5834;&#x5408;&#x306F;&#x3001;startapp&#x304B;&#x3089;&#x3092;&#x7E70;&#x308A;&#x8FD4;&#x3059;&#x3053;&#x3068;&#x306B;&#x306A;&#x308A;&#x307E;&#x3059;&#x3002; manage.py&#x3068;&#x3044;&#x3046;&#x30B9;&#x30AF;&#x30EA;&#x30D7;&#x30C8;&#x306F;&#x3001;django-admin.py&#x3068;settings&#x30AA;&#x30D7;&#x30B7;&#x30E7;&#x30F3;&#x306E;&#x30E9;&#x30C3;&#x30D1;&#x30FC;&#x3067;&#x3059;&#x3002;startproject&#x4EE5;&#x5916;&#x3067;&#x3082;django-admin.py&#x306F;&#x5229;&#x7528;&#x53EF;&#x80FD;&#x3067;&#x3059;&#x3002;
django-admin.py&#x3068;&#x3044;&#x3046;&#x306E;&#x306F;&#x3001;Django&#x306E;&#x64CD;&#x4F5C;&#x30B9;&#x30AF;&#x30EA;&#x30D7;&#x30C8;&#x3067;&#x3059;&#x3002;Django&#x306B;&#x542B;&#x307E;&#x308C;&#x307E;&#x3059;&#x3002; &#x3053;&#x306E;&#x64CD;&#x4F5C;&#x3067;&#x306F;&#x30AB;&#x30EC;&#x30F3;&#x30C8;&#x30C7;&#x30A3;&#x30EC;&#x30AF;&#x30C8;&#x30EA;&#x306B;&#x30D7;&#x30ED;&#x30B8;&#x30A7;&#x30AF;&#x30C8;&#x7528;&#x306E;&#x30C7;&#x30A3;&#x30EC;&#x30AF;&#x30C8;&#x30EA;&#x304C;&#x4F5C;&#x6210;&#x3055;&#x308C;&#x307E;&#x3059;&#x3002; &#x30D7;&#x30ED;&#x30B8;&#x30A7;&#x30AF;&#x30C8;&#x30C7;&#x30A3;&#x30EC;&#x30AF;&#x30C8;&#x30EA;&#x306E;&#x76F4;&#x4E0B;&#x306B;settings.py&#x3068;&#x3044;&#x3046;&#x30D5;&#x30A1;&#x30A4;&#x30EB;&#x304C;&#x751F;&#x6210;&#x3055;&#x308C;&#x3066;&#x3044;&#x307E;&#x3059;&#x304C;&#x3001;&#x3053;&#x308C;&#x306F;&#x30D7;&#x30ED;&#x30B8;&#x30A7;&#x30AF;&#x30C8;&#x306E;&#x8A2D;&#x5B9A;&#x3092;&#x8A18;&#x8FF0;&#x3059;&#x308B;&#x30D5;&#x30A1;&#x30A4;&#x30EB;&#x3067;&#x3059;&#x3002; manage.py&#x3068;&#x3044;&#x3046;&#x306E;&#x306F;django-admin.py&#x306E;&#x30E9;&#x30C3;&#x30D1;&#x30FC;&#x3067;&#x3059;&#x3002;&#x30D7;&#x30ED;&#x30B8;&#x30A7;&#x30AF;&#x30C8;&#x306E;&#x4F5C;&#x6210;&#x4EE5;&#x964D;&#x306F;&#x30E9;&#x30C3;&#x30D1;&#x3092;&#x4F7F;&#x3063;&#x305F;&#x65B9;&#x304C;&#x4FBF;&#x5229;&#x3067;&#x3059;&#x3002;
&#x307E;&#x305A;settings.py&#x3092;&#x7DE8;&#x96C6;&#x3057;&#x307E;&#x3059;&#x3002; &#x73FE;&#x30D0;&#x30FC;&#x30B8;&#x30E7;&#x30F3;&#x3067;&#x306F;&#x30D7;&#x30ED;&#x30B8;&#x30A7;&#x30AF;&#x30C8;&#x6BCE;&#x306B;&#x4E00;&#x3064;&#x306E;&#x30C7;&#x30FC;&#x30BF;&#x30D9;&#x30FC;&#x30B9;&#x3057;&#x304B;&#x4F7F;&#x7528;&#x3067;&#x304D;&#x307E;&#x305B;&#x3093;&#x3002; settings.py&#x306B;&#x306F;&#x4ED6;&#x306B;&#x3082;&#x3044;&#x308D;&#x3044;&#x308D;&#x306A;&#x8A2D;&#x5B9A;&#x304C;&#x3042;&#x308A;&#x307E;&#x3059;&#x304C;&#x3001;&#x306F;&#x3057;&#x3087;&#x308A;&#x307E;&#x3059;&#x3002; &#x30B3;&#x30E1;&#x30F3;&#x30C8;&#x3092;&#x8AAD;&#x3081;&#x3070;&#x5927;&#x62B5;&#x308F;&#x304B;&#x308A;&#x307E;&#x3059;&#x3002;
&#x81EA;&#x52D5;&#x7BA1;&#x7406;&#x30A4;&#x30F3;&#x30BF;&#x30FC;&#x30D5;&#x30A7;&#x30FC;&#x30B9;&#x3067;&#x4F7F;&#x7528;&#x3059;&#x308B;&#x30C6;&#x30FC;&#x30D6;&#x30EB;&#x3084;&#x3001;&#x30A2;&#x30D7;&#x30EA;&#x30B1;&#x30FC;&#x30B7;&#x30E7;&#x30F3;&#x3067;&#x4F7F;&#x7528;&#x3059;&#x308B;&#x60C5;&#x5831;&#x3082;&#x683C;&#x7D0D;&#x3055;&#x308C;&#x307E;&#x3059;&#x3002; &#x30C7;&#x30FC;&#x30BF;&#x30D9;&#x30FC;&#x30B9;&#x81EA;&#x4F53;&#x3084;&#x63A5;&#x7D9A;&#x30E6;&#x30FC;&#x30B6;&#x306F;&#x4F5C;&#x6210;&#x3055;&#x308C;&#x307E;&#x305B;&#x3093;&#x306E;&#x3067;&#x3001;&#x4F7F;&#x7528;&#x3059;&#x308B;&#x30C7;&#x30FC;&#x30BF;&#x30D9;&#x30FC;&#x30B9;&#x3068;&#x63A5;&#x7D9A;&#x30E6;&#x30FC;&#x30B6;&#x306F;&#x4E8B;&#x524D;&#x306B;&#x4F5C;&#x6210;&#x3057;&#x3066;&#x304A;&#x304F;&#x5FC5;&#x8981;&#x304C;&#x3042;&#x308A;&#x307E;&#x3059;&#x3002;
&#x30A2;&#x30D7;&#x30EA;&#x30B1;&#x30FC;&#x30B7;&#x30E7;&#x30F3;&#x3092;&#x958B;&#x59CB;&#x3059;&#x308B;&#x306B;&#x306F;&#x3001;manage.py&#x3092;&#x4F7F;&#x7528;&#x3057;&#x3066;startproject&#x3057;&#x307E;&#x3059;&#x3002; &#x30D7;&#x30ED;&#x30B8;&#x30A7;&#x30AF;&#x30C8;&#x306B;&#x30A2;&#x30D7;&#x30EA;&#x30B1;&#x30FC;&#x30B7;&#x30E7;&#x30F3;&#x304C;&#x4E00;&#x3064;&#x306E;&#x5834;&#x5408;&#x306F;&#x3001;&#x306A;&#x3093;&#x3060;&#x304B;&#x9593;&#x629C;&#x3051;&#x306B;&#x306A;&#x3063;&#x3066;&#x3057;&#x307E;&#x3044;&#x307E;&#x3059;&#x3002; WorkStyle&#x304C;&#x30D7;&#x30ED;&#x30B8;&#x30A7;&#x30AF;&#x30C8;&#x306E;&#x4E00;&#x90E8;&#x3067;&#x6216;&#x308B;&#x5834;&#x5408;&#x306A;&#x3093;&#x304B;&#x306F;&#x3057;&#x3063;&#x304F;&#x308A;&#x304F;&#x308B;&#x3068;&#x601D;&#x3044;&#x307E;&#x3059;&#x304C;&#x3002;
DRY&#x306E;&#x539F;&#x5247;&#x304C;&#x3042;&#x308B;&#x306E;&#x3067;&#x3001;&#x7D50;&#x69CB;&#x7D30;&#x304B;&#x3044;Model&#x306B;&#x306A;&#x308A;&#x307E;&#x3059;&#x3002; class META&#x3068;&#x3044;&#x3046;&#x90E8;&#x5206;&#x306B;&#x306F;&#x3044;&#x308D;&#x3044;&#x308D;&#x8A18;&#x8FF0;&#x3059;&#x308B;&#x3053;&#x3068;&#x304C;&#x51FA;&#x6765;&#x307E;&#x3059;&#xFF08;db&#x306E;&#x8A2D;&#x5B9A;&#x3068;&#x95A2;&#x4FC2;&#x306E;&#x306A;&#x3044;&#x30D0;&#x30EA;&#x30C7;&#x30FC;&#x30BF;&#x3068;&#x304B;&#xFF09;&#x3002; TurboGears&#x3068;&#x304B;&#x898B;&#x305F;&#x3053;&#x3068;&#x3042;&#x308B;&#x4EBA;&#x306F;&#x4F3C;&#x3066;&#x308B;&#x3068;&#x611F;&#x3058;&#x308B;&#x3067;&#x3057;&#x3087;&#x3046;&#x3002; PK&#x306F;&#x81EA;&#x52D5;&#x7684;&#x306B;id&#x3068;&#x3044;&#x3046;&#x5909;&#x6570;&#x540D;&#x3067;&#x751F;&#x6210;&#x3055;&#x308C;&#x307E;&#x3059;&#x3002; DRY&#x306F;&#x539F;&#x5247;&#x306A;&#x306E;&#x3067;&#x3001;&#x30C6;&#x30FC;&#x30D6;&#x30EB;&#x3084;&#x30AB;&#x30E9;&#x30E0;&#x306E;&#x540D;&#x524D;&#x3068;&#x306E;&#x5BFE;&#x5FDC;&#x306F;&#x5909;&#x66F4;&#x3059;&#x308B;&#x3053;&#x3068;&#x3082;&#x51FA;&#x6765;&#x307E;&#x3059;&#x3002;
&#x30A4;&#x30F3;&#x30B9;&#x30C8;&#x30FC;&#x30EB;&#x3092;&#x884C;&#x3046;&#x3068;&#x3001;&#x30C7;&#x30FC;&#x30BF;&#x30D9;&#x30FC;&#x30B9;&#x306B;Model&#x3067;&#x5B9A;&#x7FA9;&#x3057;&#x305F;&#x30C6;&#x30FC;&#x30D6;&#x30EB;&#x304C;&#x4F5C;&#x6210;&#x3055;&#x308C;&#x307E;&#x3059;&#x3002; &#x540C;&#x6642;&#x306B;&#x3001;&#x30A2;&#x30D7;&#x30EA;&#x30B1;&#x30FC;&#x30B7;&#x30E7;&#x30F3;&#x60C5;&#x5831;&#x304C;Django&#x30B3;&#x30A2;&#x30C6;&#x30FC;&#x30D6;&#x30EB;&#x306B;&#x767B;&#x9332;&#x3055;&#x308C;&#x307E;&#x3059;&#x3002; Index&#x306F;&#x81EA;&#x52D5;&#x3067;&#x306F;&#x767B;&#x9332;&#x3055;&#x308C;&#x306A;&#x3044;&#x306E;&#x3067;&#x3001;sqlindexes&#x3092;&#x5F15;&#x6570;&#x306B;&#x4E0E;&#x3048;&#x3066;sql&#x3092;&#x51FA;&#x529B;&#x3055;&#x305B;&#x3066;&#x3001;&#x624B;&#x52D5;&#x3067;&#x5B9F;&#x884C;&#x3002; &#x30C6;&#x30FC;&#x30D6;&#x30EB;&#x540D;&#x306F;&#x30A2;&#x30D7;&#x30EA;&#x30B1;&#x30FC;&#x30B7;&#x30E7;&#x30F3;&#x540D;&#x3068;Model&#x540D;&#xFF08;&#x8907;&#x6570;&#x5F62;&#xFF09;&#x3067;&#x4F5C;&#x6210;&#x3055;&#x308C;&#x308B;&#x3002;
&#x3053;&#x3053;&#x307E;&#x3067;&#x3067;&#x3001;O/R&#x304C;&#x4F7F;&#x7528;&#x53EF;&#x80FD;&#x306B;&#x306A;&#x3063;&#x3066;&#x3044;&#x307E;&#x3059;&#x306E;&#x3067;&#x3001;Python&#x30B9;&#x30AF;&#x30EA;&#x30D7;&#x30C8;&#x304B;&#x3089;&#x4F7F;&#x3063;&#x3066;&#x307F;&#x307E;&#x3059;&#x3002; DJANGO_SETTINGS_MODULE&#x3068;&#x3044;&#x3046;&#x74B0;&#x5883;&#x5909;&#x6570;&#x3092;&#x30BB;&#x30C3;&#x30C8;&#x3057;&#x3066;&#x304A;&#x304F;&#x5FC5;&#x8981;&#x304C;&#x3042;&#x308A;&#x307E;&#x3059;&#x3002;
urls.py&#x306F;&#x30A2;&#x30D7;&#x30EA;&#x30B1;&#x30FC;&#x30B7;&#x30E7;&#x30F3;&#x6BCE;&#x306B;&#x5206;&#x3051;&#x305F;&#x3044;&#x306E;&#x3067;&#x3001;&#x30D7;&#x30ED;&#x30B8;&#x30A7;&#x30AF;&#x30C8;&#x76F4;&#x4E0B;&#x306E;urls.py&#x306F;&#x30A4;&#x30F3;&#x30AF;&#x30EB;&#x30FC;&#x30C9;&#x3092;&#x884C;&#x3063;&#x3066;&#x3044;&#x308B;&#x3060;&#x3051;&#x3067;&#x3059;&#x3002; &#x53D6;&#x5F97;&#x3068;&#x66F4;&#x65B0;&#x3092;&#x540C;&#x4E00;URL&#x306B;&#x3059;&#x308B;&#x3068;&#x3001;&#x66F4;&#x65B0;&#x6642;&#x306B;&#x30A8;&#x30E9;&#x30FC;&#x304C;&#x51FA;&#x305F;&#x969B;&#x306E;&#x51E6;&#x7406;&#x3067;&#x53D6;&#x5F97;&#x3068;&#x540C;&#x3058;&#x7269;&#x3092;&#x4F7F;&#x3044;&#x56DE;&#x305B;&#x308B;&#x306E;&#x3067;&#x3001;&#x540C;&#x4E00;&#x306B;&#x3057;&#x307E;&#x3059;&#x3002; &#x53D6;&#x5F97;&#x3068;&#x66F4;&#x65B0;&#x306E;&#x3069;&#x3061;&#x3089;&#x3067;&#x547C;&#x3070;&#x308C;&#x305F;&#x306E;&#x304B;&#x3092;&#x5224;&#x5225;&#x3059;&#x308B;&#x306E;&#x306F;GET&#x304B;POST&#x304B;&#x3092;&#x5229;&#x7528;&#x3057;&#x307E;&#x3059;&#x3002;
&#x540D;&#x524D;&#x306F;&#x30D3;&#x30E5;&#x30FC;&#x3067;&#x3059;&#x304C;&#x3001;&#x5B9F;&#x969B;&#x306F;&#x30B3;&#x30F3;&#x30C8;&#x30ED;&#x30FC;&#x30E9;&#x3067;&#x3059;&#x3002; URL&#x306E;&#x3068;&#x3053;&#x308D;&#x3067;task_id&#x3068;&#x306A;&#x3063;&#x3066;&#x3044;&#x305F;&#x7269;&#x304C;&#x3001;edit_task&#x306E;task_id&#x306B;&#x6E21;&#x3055;&#x308C;&#x307E;&#x3059;&#x3002;&#x7B2C;&#x4E00;&#x5F15;&#x6570;&#x306E;request&#x3068;&#x3044;&#x3046;&#x30AA;&#x30D6;&#x30B8;&#x30A7;&#x30AF;&#x30C8;&#x306F;&#x540D;&#x524D;&#x304B;&#x3089;&#x60F3;&#x50CF;&#x3067;&#x304D;&#x308B;&#x3068;&#x304A;&#x308A;&#x306E;&#x7269;&#x3067;&#x3059;&#x3002;render_to_response&#x3068;&#x3044;&#x3046;&#x30D5;&#x30A1;&#x30F3;&#x30AF;&#x30B7;&#x30E7;&#x30F3;&#x306E;&#x7D50;&#x679C;&#x3092;&#x8FD4;&#x3057;&#x3066;&#x3044;&#x307E;&#x3059;&#x304C;&#x3001;&#x3053;&#x308C;&#x306F;django&#x306E;&#x30C7;&#x30D5;&#x30A9;&#x30EB;&#x30C8;&#x30C6;&#x30F3;&#x30D7;&#x30EC;&#x30FC;&#x30C8;&#x30B7;&#x30B9;&#x30C6;&#x30E0;&#x3092;&#x4F7F;&#x7528;&#x3057;&#x3066;&#x30EC;&#x30B9;&#x30DD;&#x30F3;&#x30B9;&#x3092;&#x8FD4;&#x3059;&#x30B7;&#x30E7;&#x30FC;&#x30C8;&#x30AB;&#x30C3;&#x30C8;&#x30D5;&#x30A1;&#x30F3;&#x30AF;&#x30B7;&#x30E7;&#x30F3;&#x3067;&#x3059;&#x3002;&#x3068;&#x306B;&#x304B;&#x304F;&#x30EC;&#x30B9;&#x30DD;&#x30F3;&#x30B9;&#x3092;&#x8FD4;&#x305B;&#x3070;&#x3088;&#x3044;&#x306E;&#x3067;&#x3001;&#x5225;&#x306E;&#x30C6;&#x30F3;&#x30D7;&#x30EC;&#x30FC;&#x30C8;&#x30B7;&#x30B9;&#x30C6;&#x30E0;&#x3092;&#x4F7F;&#x7528;&#x3059;&#x308B;&#x306E;&#x3082;&#x3001;XML&#x3084;PDF&#x3092;&#x8FD4;&#x3059;&#x306E;&#x3082;&#x81EA;&#x7531;&#x3067;&#x3059;&#x3002; &#x30D3;&#x30E5;&#x30FC;&#x306F;&#x3001;&#x30EA;&#x30AF;&#x30A8;&#x30B9;&#x30C8;&#x3092;&#x53D7;&#x3051;&#x53D6;&#x3063;&#x3066;&#x51E6;&#x7406;&#x3092;&#x3057;&#x3066;&#x30EC;&#x30B9;&#x30DD;&#x30F3;&#x30B9;&#x3092;&#x8FD4;&#x3059;&#x3002;&#x305D;&#x308C;&#x3060;&#x3051;&#x306E;&#x3082;&#x306E;&#x3067;&#x3059;&#x3002;
DRY&#x306E;&#x539F;&#x5247;&#x304C;&#x3042;&#x308B;&#x306E;&#x3067;&#x3001;&#x5165;&#x529B;&#x5024;validate&#x3082;Model&#x306E;&#x60C5;&#x5831;&#x304B;&#x3089;&#x884C;&#x308F;&#x308C;&#x307E;&#x3059;&#x3002; &#x81EA;&#x52D5;&#x30DE;&#x30CB;&#x30D4;&#x30E5;&#x30EC;&#x30FC;&#x30BF;&#x306F;&#x8FFD;&#x52A0;&#x7528;&#x3068;&#x5909;&#x66F4;&#x7528;&#x306E;&#xFF12;&#x7A2E;&#x985E;&#x304C;&#x3042;&#x308A;&#x307E;&#x3059;&#x3002; Model&#x306B;&#x8A18;&#x8FF0;&#x3057;&#x305F;&#x5B9A;&#x7FA9;&#x3068;Model&#x306E;META&#x306B;&#x8A18;&#x8FF0;&#x3057;&#x305F;&#x30AB;&#x30B9;&#x30BF;&#x30E0;&#x30D0;&#x30EA;&#x30C7;&#x30FC;&#x30BF;&#x304C;&#x547C;&#x3073;&#x51FA;&#x3055;&#x308C;&#x307E;&#x3059;&#x3002; &#x9762;&#x767D;&#x3044;&#x306E;&#x306F;&#x5024;&#x3092;&#x8A70;&#x3081;&#x76F4;&#x3055;&#x306A;&#x304F;&#x3066;&#x3082;&#x305D;&#x306E;&#x307E;&#x307E;&#x4FDD;&#x5B58;&#x3067;&#x304D;&#x308B;&#x3053;&#x3068;&#x3067;&#x3059;&#x3002;&#x5FB9;&#x5E95;&#x3057;&#x3066;&#x7121;&#x99C4;&#x3092;&#x7701;&#x3044;&#x3066;&#x3044;&#x307E;&#x3059;&#x3002;
&#x73FE;&#x5B9F;&#x7684;&#x306B;&#x306F;Model&#x3068;&#xFF11;&#x5BFE;&#xFF11;&#x306E;&#x30C7;&#x30FC;&#x30BF;&#x304C;&#x30B5;&#x30D6;&#x30DF;&#x30C3;&#x30C8;&#x3055;&#x308C;&#x308B;&#x3053;&#x3068;&#x306F;&#x5C11;&#x306A;&#x3044;&#x306E;&#x3067;&#x3001;&#x30AB;&#x30B9;&#x30BF;&#x30E0;Manipulator&#x3092;&#x4F5C;&#x6210;&#x3057;&#x307E;&#x3059;&#x3002; &#x81EA;&#x52D5;&#x3092;&#x3044;&#x304F;&#x3064;&#x304B;&#x901A;&#x3059;&#x3068;&#x3044;&#x3046;&#x624B;&#x3082;&#x3042;&#x308B;&#x3068;&#x601D;&#x3044;&#x307E;&#x3059;&#x304C;&#x3001;&#x3044;&#x307E;&#x306E;&#x3068;&#x3053;&#x308D;&#x3069;&#x3046;&#x3059;&#x308B;&#x306E;&#x304C;&#x3088;&#x3044;&#x306E;&#x304B;&#x308F;&#x304B;&#x308A;&#x307E;&#x305B;&#x3093;&#x3002; &#x3042;&#x3068;&#x3001;&#x3053;&#x306E;&#x4F8B;&#x3067;&#x4F7F;&#x7528;&#x3057;&#x3066;&#x3044;&#x308B;isValidTagName&#x306F;&#x3053;&#x3053;&#x3067;&#x306F;&#x306A;&#x304F;&#x3066;Model&#x306E;META&#x306B;&#x8A18;&#x8FF0;&#x3057;&#x3066;&#x5B9F;&#x969B;&#x306F;&#x554F;&#x984C;&#x3042;&#x308A;&#x307E;&#x305B;&#x3093;&#x3002; &#x4F7F;&#x7528;&#x65B9;&#x6CD5;&#x306F;&#x7C21;&#x5358;&#x3067;&#x3059;&#x3002;&#x81EA;&#x52D5;&#x306E;&#x7269;&#x3068;&#x306E;&#x9055;&#x3044;&#x306F;&#x3001;&#x30AB;&#x30B9;&#x30BF;&#x30E0;Manipulator&#x3092;&#x4F7F;&#x3063;&#x3066;&#x306E;&#x4FDD;&#x5B58;&#x304C;&#x51FA;&#x6765;&#x306A;&#x3044;&#x3053;&#x3068;&#x304F;&#x3089;&#x3044;&#x3067;&#x3057;&#x3087;&#x3046;&#x3002;
&#x8A2D;&#x7F6E;&#x30C7;&#x30A3;&#x30EC;&#x30AF;&#x30C8;&#x30EA;&#x306F;&#x8907;&#x6570;&#x8A2D;&#x5B9A;&#x53EF;&#x80FD;&#x3067;&#x3059;&#x3002; &#x4ECA;&#x56DE;&#x306F;&#x7D99;&#x627F;&#x3092;&#x4F7F;&#x3063;&#x305F;&#x4F8B;&#x3067;&#x3044;&#x304D;&#x307E;&#x3059;&#x3002; &#x307E;&#x305A;&#x4F5C;&#x6210;&#x3057;&#x305F;&#x306E;&#x306F;&#x3001;&#x30C6;&#x30F3;&#x30D7;&#x30EC;&#x30FC;&#x30C8;&#x30C7;&#x30A3;&#x30EC;&#x30AF;&#x30C8;&#x30EA;&#x306E;&#x4E0B;&#x306E;workstyle/TaskForm.html&#x3067;&#x3059;&#x3002;&#x30A2;&#x30D7;&#x30EA;&#x30B1;&#x30FC;&#x30B7;&#x30E7;&#x30F3;&#x540D;&#x3092;&#x5165;&#x308C;&#x3066;&#x3044;&#x308B;&#x306E;&#x304C;&#x30DD;&#x30A4;&#x30F3;&#x30C8;&#x3067;&#x3059;&#xFF08;&#x30D3;&#x30E5;&#x30FC;&#x304B;&#x3089;&#x306F;workstyle/TaskForm&#x3068;&#x6D0B;&#x821E;&#x306E;&#x3067;&#x3059;&#x304C;&#x3001;&#x3053;&#x3046;&#x3059;&#x308C;&#x3070;&#x91CD;&#x8907;&#x3057;&#x306B;&#x304F;&#x304F;&#x306A;&#x308A;&#x307E;&#x3059;&#xFF09;&#x3002; &#x30C6;&#x30F3;&#x30D7;&#x30EC;&#x30FC;&#x30C8;&#x306E;&#x30C7;&#x30D5;&#x30A9;&#x30EB;&#x30C8;&#x306E;&#x62E1;&#x5F35;&#x5B50;&#x306F;.html&#x3067;&#x3059;&#xFF08;&#x5909;&#x66F4;&#x53EF;&#x80FD;&#xFF09;&#x3002; {%&#x304C;if&#x6587;&#x306A;&#x3069;&#x306E;&#x6587;&#x3092;&#x8868;&#x3057;&#x3001;{{&#x304C;&#x5909;&#x6570;&#x306E;&#x51FA;&#x529B;&#x3067;&#x3059;&#x3002; for&#x30EB;&#x30FC;&#x30D7;&#x3084;&#x30EB;&#x30FC;&#x30D7;&#x30AB;&#x30A6;&#x30F3;&#x30BF;&#x30FC;&#x7B49;&#x3001;&#x5927;&#x62B5;&#x306E;&#x5FC5;&#x8981;&#x306A;&#x7269;&#x306F;&#x305D;&#x308D;&#x3063;&#x3066;&#x3044;&#x307E;&#x3059;&#x3002;&#x30D5;&#x30A3;&#x30EB;&#x30BF;&#x30FC;&#x3082;&#x7D50;&#x69CB;&#x306A;&#x6570;&#x3042;&#x308A;&#x307E;&#x3059;&#x3002; &#x7D99;&#x627F;&#x306F;&#x3001;&#x30D9;&#x30FC;&#x30B9;&#x306B;&#x3042;&#x308B;&#x30D6;&#x30ED;&#x30C3;&#x30AF;&#x3092;&#x7D99;&#x627F;&#x5148;&#x306E;&#x8A18;&#x8FF0;&#x306B;&#x7F6E;&#x304D;&#x63DB;&#x3048;&#x307E;&#x3059;&#xFF08;&#x7D99;&#x627F;&#x5148;&#x3067;&#x306F;&#x30D6;&#x30ED;&#x30C3;&#x30AF;&#x4EE5;&#x5916;&#x306F;&#x4E0D;&#x8981;&#xFF09;&#x3002; &#xFF08;&#x4F59;&#x88D5;&#x304C;&#x3042;&#x3063;&#x305F;&#x3089;&#x30B3;&#x30FC;&#x30C9;&#xFF09;
&#x30E2;&#x30B8;&#x30E5;&#x30FC;&#x30EB;&#x3067;Library&#x306B;&#x30EC;&#x30B8;&#x30B9;&#x30C8;&#x3057;&#x3066;&#x3001;&#x30D3;&#x30E5;&#x30FC;&#x3067;&#x3082;&#x30A4;&#x30F3;&#x30DD;&#x30FC;&#x30C8;&#x3092;&#x3057;&#x3001;&#x30C6;&#x30F3;&#x30D7;&#x30EC;&#x30FC;&#x30C8;&#x3067;&#x3082;&#x30ED;&#x30FC;&#x30C9;&#x3092;&#x3057;&#x307E;&#x3059;&#x3002; &#x3061;&#x3087;&#x3063;&#x3068;&#x9762;&#x5012;&#x3067;&#x3059;&#x304C;&#x3001;&#x4FBF;&#x5229;&#x306A;&#x6A5F;&#x80FD;&#x3067;&#x3059;&#x3002;
&#x672C;&#x6765;&#x306F;&#x5148;&#x3067;&#x3059;&#x304C;&#x30FB;&#x30FB;&#x30FB;&#x3002; greenpeace&#x306E;melt&#x3068;&#x3044;&#x3046;&#x30D7;&#x30ED;&#x30B8;&#x30A7;&#x30AF;&#x30C8;&#x3067;&#x306F;twil&#x3068;&#x3044;&#x3046;&#x30E9;&#x30A4;&#x30D6;&#x30E9;&#x30EA;&#x3092;&#x5229;&#x7528;&#x3057;&#x3066;&#x30C6;&#x30B9;&#x30C8;&#x3092;&#x3057;&#x3066;&#x3044;&#x308B;&#x6A21;&#x69D8;&#x3067;&#x3059;&#x3002; &#x3061;&#x3087;&#x3063;&#x3068;&#x307E;&#x3060;&#x3044;&#x308D;&#x3044;&#x308D;&#x8ABF;&#x67FB;&#x4E0D;&#x8DB3;&#x3067;&#x3059;&#x3002;
&#x653E;&#x7F6E;&#x3057;&#x3066;&#x3042;&#x308B;&#x30C1;&#x30E5;&#x30FC;&#x30C8;&#x30EA;&#x30A2;&#x30EB;&#x7B49;&#x306E;&#x8A33;&#x306F;&#x3001;&#x30D0;&#x30FC;&#x30B8;&#x30E7;&#x30F3;1.0&#x524D;&#x5F8C;&#x3067;&#x624B;&#x3092;&#x5165;&#x308C;&#x3088;&#x3046;&#x3068;&#x8003;&#x3048;&#x3066;&#x3044;&#x307E;&#x3059;&#x3002;
&#x4EE5;&#x4E0A;&#x3001;&#x99C6;&#x3051;&#x8DB3;&#x3067;&#x3059;&#x304C;&#x3001;&#x7D39;&#x4ECB;&#x81EA;&#x4F53;&#x306F;&#x7D42;&#x308F;&#x308A;&#x307E;&#x3059;&#x3002;
Download now