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
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
Delhi Call girls
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
apidays
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
hans926745
How to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
naman860154
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
Michael W. Hawkins
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
Delhi Call girls
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
Enterprise Knowledge
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
Martijn de Jong
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
Remote DBA Services
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
The Digital Insurer
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
Rafal Los
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
hans926745
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
Radu Cotescu
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
Gabriella Davis
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Igalia
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
The Digital Insurer
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
sammart93
Recently uploaded
(20)
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
How to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
伝説のギタリストじゃない方の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