SlideShare une entreprise Scribd logo
1  sur  43
Django Web Framework
     김형용 , 이정민
     Framework 2.1
Django
• High-level Python Web Framework

• Develop fast
• Automate the repetitive stuff
• Follow best practices
History
• Lawrence Journal-World (
  http://www.ljworld.com)
• by World Online
  Developers
  (A...)

• LJWorld.com
• Lawrence.com
• KUsports.com
“Django” 어떻게 읽어요 ?
•   당고 (X)
•   디장고 (X)
•   장고 (?)
•   쟁고 (?)

• Django Reinhardt
Installation
• Python 2.3+
• Database: PostgreSQL, MySQL,
  SQLite3
• Python DB Interface: psycopg,
                       MySQLdb,
  pysqlite
• Django
Install Python
• http://www.python.org/download/releases/
• http://www.python.org/download/releases/

• Windows.. PATH
  – c:python24
  – c:python24scripts (django-admin.py)
Install SQLite3, pysqlite2
• SQLite3
• http://www.sqlite.org/download.html



• pysqlite2
  – http://pysqlite.org/
  – python setup.py install
Install Django (0.95)
• http://www.djangoproject.com/download/
  – tar xvzf Django-0.95.tar.gz
  – cd Django-0.95
  – sudo python setup.py install
Tutorial
Project (site) : framework21


    /admin/
        Application : admin
      Application : admin              Database
   Application : admin




    /blog/                      /phonebook/
    Application : blog        Application : phonebook
startproject
• django-admin.py framework21

framework21
  __init__.py
  manage.py         scripts/*
  settings.py       config/*
  urls.py           routes.rb

 Django              RoR
startapp
cd framework21
./manage.py startapp blog

framework21/phonebook
   __init__.py
   models.py    app/models/*
   templates    app/views/*
   views.py     app/controllers/*
   urls.py
                     RoR
Create Model
• from django.db import models

• class Person(models.Model):
•    name = models.CharField(maxlength=20)
•    phone_number = PhoneNumberField()
•    note = TextField()
•    def __str__(self):
•       return self.name
•    class Admin:
•       pass
Activating model(Application)
• settings.py  INSTALLED_APPS

• manage.py syncdb
Play with Model API
• from phonebook.models import *

• p = Person(name=u’ 김형용’ , phone_number=‘010-123-4567’,
  note=u‘ 안녕하세요 .’)
• p.save() # insert

• p = Person(name=u’ 이정민’ , phone_number=‘010-123-1234’,
  note=u‘9000+ 일 솔로인생’ )
• p.save() # insert

• Person.objects.all() # ‘ 김형용’ , ‘ 이정민’

• p = Person.objects.get(name=‘ 김형용’ )
• p.note += u’ 여자친구 구합니다 .’
• p.save() # update
admin interface.
• settings.py  INSTALLED_APPS

• manage.py syncdb

• manage.py runserver
• http://localhost:8000/
• http://localhost:8000/admin/
URL design
• urls.py

• project-level URL configuration
• application-level URL configuration

• URL -> view(callback)
View
• request, response

• decide which data is presented ,

• delegate to template how the data is
  presented
Stub view


• from django.http import HttpResponse
• def listing(request):
•    objects = Post.objects.all()
•    … template…  pass context (dict)
•    return HttpResponse(…)
Template
• how the data is presented
Template
• {{ variable }}
• {{ variable|filter }} (O)
• {% tag %}
  – {% if … %} … {% endif %}
  – {% for .. in .. %} … {% endfor %}



• {% extends “base.html %}
URL
Resolver
URL
                    Resolver

blog/urls.py

urlpatterns = patterns(‘blog.views',
    …
    (r'^blog/$',                  ‘post_list'),
    (r'^blog/new/$',              ‘post_new'),
    (r'^blog/(?P<post_id>d+)/$', ‘post_detail'),
    …
URL
                    Resolver

blog/urls.py

urlpatterns = patterns('blog.views',
    …
    (r'^blog/$',                  ‘post_list'),
    (r'^blog/new/$',              ‘post_new'),
    (r'^blog/(?P<post_id>d+)/$', ‘post_detail'),
    …
URL
                    Resolver
                                       view

blog/urls.py

urlpatterns = patterns('blog.views',
    …
    (r'^blog/$',                  ‘post_list'),
    (r'^blog/new/$',              ‘post_new'),
    (r'^blog/(?P<post_id>d+)/$', ‘post_detail'),
    …



               blog.views.post_detail
URL
                    Resolver
                                       view

blog/urls.py

urlpatterns = patterns('blog.views',
    …
    (r'^blog/$',                  ‘post_list'),
    (r'^blog/new/$',              ‘post_new'),
    (r'^blog/(?P<post_id>d+)/$', ‘post_detail'),
    …



               blog.views.post_detail(post_id=‘2’)
URL
                       Resolver           view

blog/views.py

def post_detail(request, post_id):
    post = Blog.objects.get(pk=post_id)
    …




                blog.views.post_detail(post_id=‘2’)
model
                         URL
                       Resolver           view

blog/views.py

def post_detail(request, post_id):
    post = Post.objects.get(pk=post_id)
    …
URL
                       Resolver        view
                                                   Django
blog/views.py                                     template
def post_detail(request, post_id):
    post = Blog.objects.get(pk=post_id)
    t = loader.get_template(‘blog_detail.html’)
    …



                                       blog/templates/blog_detail.html
URL
                       Resolver        view
                                                   Django
blog/views.py                                     template
def post_detail(request, post_id):
    post = Blog.objects.get(pk=post_id)
    t = loader.get_template(‘blog_detail.html’)
    c = Context({‘post’: post})
    html = t.render(c)
    …

                                       blog/templates/blog_detail.html
URL
                         Resolver        view
                                                   Django
blog/templates/blog_detail.html                   template
 <h1> {{ post.title }} </h1>
 <p> {{ post.content|restructuredText }} </p>


 Comments:
 <ul>
 {% for comment in post.comments %}
      <li> {{ comment.who }}:
           {{ comment.content }} </li>
 {% endfor %}
 </ul>




                                         Context({‘post’: post})
URL
                        Resolver        view
                                                  Django
blog/templates/blog_detail.html                  template
 <h1> {{ post.title }} </h1>
 <p> {{ post.content|restructuredText }} </p>


 Comments:
 <ul>
 {% for comment in post.comments %}
      <li> {{ comment.who }}:
           {{ comment.content }} </li>
 {% endfor %}
 </ul>                        <h1> 여자친구 구함 </h1>
                              <p> 20 세 이상 신체건강한 대한민국… </p>


                            Comments:
                            <ul>
                                 <li> 이정민 : 좋은 결과 있길바랍니다 . </li>
                            </ul>
URL
                       Resolver        view

blog/views.py

def post_detail(request, post_id):
    post = Blog.objects.get(pk=post_id)
    t = loader.get_template(‘blog_detail.html’)
    c = Context({‘post’: post})
    html = t.render(c)
    return HttpResponse(html)
URL
                            Resolver        view

     blog/views.py

     def post_detail(request, post_id):
         post = Blog.objects.get(pk=post_id)
         t = loader.get_template(‘blog_detail.html’)
         c = Context({‘post’: post})
         html = t.render(c)
         return HttpResponse(html)

OR
URL
                            Resolver        view

     blog/views.py

     def post_detail(request, post_id):
         post = Blog.objects.get(pk=post_id)
         t = loader.get_template(‘blog_detail.html’)
         c = Context({‘post’: post})
         html = t.render(c)
         return HttpResponse(html)

OR

     def post_detail(request, post_id):
         post = Blog.objects.get(pk=post_id)
         return render_to_response(‘blog_detail.html’,
             {‘post’: post})
model
  URL
           view
Resolver
                   Django
                  template
Where is MIDDLEWARE?
                 mid.process_view(request, view_func, view_args, view_kwargs)
mid.process_request(request)

                                                model
                   URL
                                  view
                 Resolver
                                                 Django
                                                template

          mid.process_response(request, response)
Server arrangement
•   Standalone
•   mod_python
•   FastCGI
•   SCGI
•   Twisted
Conclusion
•   Written in python
•   Easy admin page
•   Elegant URL design
•   Template

• Fast, easy, powerful web development
  with Django
이런저런 이야기
•   Guido’s preference
•   Korean Django Community
•   GAVI : Genome Ajax Viewer
•   GMP study

• http://code.djangoproject.com/ticket/2613
Getting Involved
• http://djangoproject.com/documentation/
• http://code.djangoproject.com/



• http://groups.google.com/group/django-user
• http://groups.google.com/group/django-develope

Contenu connexe

Tendances

Introduction to Django
Introduction to DjangoIntroduction to Django
Introduction to DjangoKnoldus Inc.
 
The Django Web Application Framework 2
The Django Web Application Framework 2The Django Web Application Framework 2
The Django Web Application Framework 2fishwarter
 
Django Templates
Django TemplatesDjango Templates
Django TemplatesWilly Liu
 
Routing & Navigating Pages in Angular 2
Routing & Navigating Pages in Angular 2Routing & Navigating Pages in Angular 2
Routing & Navigating Pages in Angular 2Knoldus Inc.
 
Web development with django - Basics Presentation
Web development with django - Basics PresentationWeb development with django - Basics Presentation
Web development with django - Basics PresentationShrinath Shenoy
 
Django Framework Overview forNon-Python Developers
Django Framework Overview forNon-Python DevelopersDjango Framework Overview forNon-Python Developers
Django Framework Overview forNon-Python DevelopersRosario Renga
 
Angular Interview Questions & Answers
Angular Interview Questions & AnswersAngular Interview Questions & Answers
Angular Interview Questions & AnswersRatnala Charan kumar
 
Web Development with Python and Django
Web Development with Python and DjangoWeb Development with Python and Django
Web Development with Python and DjangoMichael Pirnat
 
MVC ppt presentation
MVC ppt presentationMVC ppt presentation
MVC ppt presentationBhavin Shah
 
Introduction to Javascript
Introduction to JavascriptIntroduction to Javascript
Introduction to JavascriptSeble Nigussie
 
Python RESTful webservices with Python: Flask and Django solutions
Python RESTful webservices with Python: Flask and Django solutionsPython RESTful webservices with Python: Flask and Django solutions
Python RESTful webservices with Python: Flask and Django solutionsSolution4Future
 

Tendances (20)

Introduction to Django
Introduction to DjangoIntroduction to Django
Introduction to Django
 
The Django Web Application Framework 2
The Django Web Application Framework 2The Django Web Application Framework 2
The Django Web Application Framework 2
 
django
djangodjango
django
 
Django Templates
Django TemplatesDjango Templates
Django Templates
 
Routing & Navigating Pages in Angular 2
Routing & Navigating Pages in Angular 2Routing & Navigating Pages in Angular 2
Routing & Navigating Pages in Angular 2
 
DJango
DJangoDJango
DJango
 
Web development with django - Basics Presentation
Web development with django - Basics PresentationWeb development with django - Basics Presentation
Web development with django - Basics Presentation
 
Angular modules in depth
Angular modules in depthAngular modules in depth
Angular modules in depth
 
Django Girls Tutorial
Django Girls TutorialDjango Girls Tutorial
Django Girls Tutorial
 
Django Framework Overview forNon-Python Developers
Django Framework Overview forNon-Python DevelopersDjango Framework Overview forNon-Python Developers
Django Framework Overview forNon-Python Developers
 
Angular Interview Questions & Answers
Angular Interview Questions & AnswersAngular Interview Questions & Answers
Angular Interview Questions & Answers
 
Java script
Java scriptJava script
Java script
 
Web Development with Python and Django
Web Development with Python and DjangoWeb Development with Python and Django
Web Development with Python and Django
 
Angular Directives
Angular DirectivesAngular Directives
Angular Directives
 
MVC ppt presentation
MVC ppt presentationMVC ppt presentation
MVC ppt presentation
 
Object oriented programming in python
Object oriented programming in pythonObject oriented programming in python
Object oriented programming in python
 
Introduction to Javascript
Introduction to JavascriptIntroduction to Javascript
Introduction to Javascript
 
Angular Directives
Angular DirectivesAngular Directives
Angular Directives
 
Basic Python Django
Basic Python DjangoBasic Python Django
Basic Python Django
 
Python RESTful webservices with Python: Flask and Django solutions
Python RESTful webservices with Python: Flask and Django solutionsPython RESTful webservices with Python: Flask and Django solutions
Python RESTful webservices with Python: Flask and Django solutions
 

En vedette

Nutritionists get social - Azmina Govindji
Nutritionists get social - Azmina GovindjiNutritionists get social - Azmina Govindji
Nutritionists get social - Azmina GovindjiAzminaGovindji
 
Brochure COMOS Overview
Brochure  COMOS OverviewBrochure  COMOS Overview
Brochure COMOS Overviewluizcjs1
 
Brochure COMOS Portfolio
Brochure COMOS PortfolioBrochure COMOS Portfolio
Brochure COMOS Portfolioluizcjs1
 
Waterpark
WaterparkWaterpark
Waterparkbpm297
 
دایره المعارف معاهدات بین المللی حقوق معاهدات معاهده جقوق معاهده (www.bey...
دایره المعارف معاهدات بین المللی  حقوق معاهدات  معاهده  جقوق معاهده  (www.bey...دایره المعارف معاهدات بین المللی  حقوق معاهدات  معاهده  جقوق معاهده  (www.bey...
دایره المعارف معاهدات بین المللی حقوق معاهدات معاهده جقوق معاهده (www.bey...maysam araee daronkola
 
Brochure COMOS Automation
Brochure COMOS AutomationBrochure COMOS Automation
Brochure COMOS Automationluizcjs1
 
Brochure COMOS Platform
Brochure COMOS PlatformBrochure COMOS Platform
Brochure COMOS Platformluizcjs1
 
Brochure COMOS Operations
Brochure COMOS OperationsBrochure COMOS Operations
Brochure COMOS Operationsluizcjs1
 
M.a.d comprehensive lists of international multilateral treaties (law of trea...
M.a.d comprehensive lists of international multilateral treaties (law of trea...M.a.d comprehensive lists of international multilateral treaties (law of trea...
M.a.d comprehensive lists of international multilateral treaties (law of trea...maysam araee daronkola
 
Famous Criminal Presentation - John List - Ms Chang
Famous Criminal Presentation - John List - Ms ChangFamous Criminal Presentation - John List - Ms Chang
Famous Criminal Presentation - John List - Ms ChangFabian Torres
 

En vedette (16)

Nutritionists get social - Azmina Govindji
Nutritionists get social - Azmina GovindjiNutritionists get social - Azmina Govindji
Nutritionists get social - Azmina Govindji
 
Brochure COMOS Overview
Brochure  COMOS OverviewBrochure  COMOS Overview
Brochure COMOS Overview
 
Ore quispe despido
Ore quispe despidoOre quispe despido
Ore quispe despido
 
Gbr paspot
Gbr paspotGbr paspot
Gbr paspot
 
Brochure COMOS Portfolio
Brochure COMOS PortfolioBrochure COMOS Portfolio
Brochure COMOS Portfolio
 
Waterpark
WaterparkWaterpark
Waterpark
 
دایره المعارف معاهدات بین المللی حقوق معاهدات معاهده جقوق معاهده (www.bey...
دایره المعارف معاهدات بین المللی  حقوق معاهدات  معاهده  جقوق معاهده  (www.bey...دایره المعارف معاهدات بین المللی  حقوق معاهدات  معاهده  جقوق معاهده  (www.bey...
دایره المعارف معاهدات بین المللی حقوق معاهدات معاهده جقوق معاهده (www.bey...
 
Ch 2
Ch 2Ch 2
Ch 2
 
P.point.i
P.point.iP.point.i
P.point.i
 
Brochure COMOS Automation
Brochure COMOS AutomationBrochure COMOS Automation
Brochure COMOS Automation
 
Invierea domnului
Invierea domnuluiInvierea domnului
Invierea domnului
 
Brochure COMOS Platform
Brochure COMOS PlatformBrochure COMOS Platform
Brochure COMOS Platform
 
Prezantim 4 Party
Prezantim 4 PartyPrezantim 4 Party
Prezantim 4 Party
 
Brochure COMOS Operations
Brochure COMOS OperationsBrochure COMOS Operations
Brochure COMOS Operations
 
M.a.d comprehensive lists of international multilateral treaties (law of trea...
M.a.d comprehensive lists of international multilateral treaties (law of trea...M.a.d comprehensive lists of international multilateral treaties (law of trea...
M.a.d comprehensive lists of international multilateral treaties (law of trea...
 
Famous Criminal Presentation - John List - Ms Chang
Famous Criminal Presentation - John List - Ms ChangFamous Criminal Presentation - John List - Ms Chang
Famous Criminal Presentation - John List - Ms Chang
 

Similaire à Django

Gae Meets Django
Gae Meets DjangoGae Meets Django
Gae Meets Djangofool2nd
 
Django Class-based views (Slovenian)
Django Class-based views (Slovenian)Django Class-based views (Slovenian)
Django Class-based views (Slovenian)Luka Zakrajšek
 
Introduction to Django
Introduction to DjangoIntroduction to Django
Introduction to DjangoJoaquim Rocha
 
Introduction Django
Introduction DjangoIntroduction Django
Introduction DjangoWade Austin
 
Be RESTful (Symfony Camp 2008)
Be RESTful (Symfony Camp 2008)Be RESTful (Symfony Camp 2008)
Be RESTful (Symfony Camp 2008)Fabien Potencier
 
Django workshop : let's make a blog
Django workshop : let's make a blogDjango workshop : let's make a blog
Django workshop : let's make a blogPierre Sudron
 
TurboGears2 Pluggable Applications
TurboGears2 Pluggable ApplicationsTurboGears2 Pluggable Applications
TurboGears2 Pluggable ApplicationsAlessandro Molina
 
Flask intro - ROSEdu web workshops
Flask intro - ROSEdu web workshopsFlask intro - ROSEdu web workshops
Flask intro - ROSEdu web workshopsAlex Eftimie
 
The Django Web Application Framework 2
The Django Web Application Framework 2The Django Web Application Framework 2
The Django Web Application Framework 2fishwarter
 
The Django Web Application Framework 2
The Django Web Application Framework 2The Django Web Application Framework 2
The Django Web Application Framework 2fishwarter
 
PyCon APAC - Django Test Driven Development
PyCon APAC - Django Test Driven DevelopmentPyCon APAC - Django Test Driven Development
PyCon APAC - Django Test Driven DevelopmentTudor Munteanu
 
The Django Web Application Framework 2
The Django Web Application Framework 2The Django Web Application Framework 2
The Django Web Application Framework 2fishwarter
 
Building a Portfolio With Custom Post Types
Building a Portfolio With Custom Post TypesBuilding a Portfolio With Custom Post Types
Building a Portfolio With Custom Post TypesAlex Blackie
 
DJ-06-Views-Templates.pptx
DJ-06-Views-Templates.pptxDJ-06-Views-Templates.pptx
DJ-06-Views-Templates.pptxDamien Raczy
 
A Basic Django Introduction
A Basic Django IntroductionA Basic Django Introduction
A Basic Django IntroductionGanga Ram
 

Similaire à Django (20)

Django
DjangoDjango
Django
 
Gae Meets Django
Gae Meets DjangoGae Meets Django
Gae Meets Django
 
Django Vs Rails
Django Vs RailsDjango Vs Rails
Django Vs Rails
 
Django
DjangoDjango
Django
 
Django Class-based views (Slovenian)
Django Class-based views (Slovenian)Django Class-based views (Slovenian)
Django Class-based views (Slovenian)
 
Introduction to Django
Introduction to DjangoIntroduction to Django
Introduction to Django
 
Introduction Django
Introduction DjangoIntroduction Django
Introduction Django
 
Be RESTful (Symfony Camp 2008)
Be RESTful (Symfony Camp 2008)Be RESTful (Symfony Camp 2008)
Be RESTful (Symfony Camp 2008)
 
Django workshop : let's make a blog
Django workshop : let's make a blogDjango workshop : let's make a blog
Django workshop : let's make a blog
 
TurboGears2 Pluggable Applications
TurboGears2 Pluggable ApplicationsTurboGears2 Pluggable Applications
TurboGears2 Pluggable Applications
 
Flask intro - ROSEdu web workshops
Flask intro - ROSEdu web workshopsFlask intro - ROSEdu web workshops
Flask intro - ROSEdu web workshops
 
The Django Web Application Framework 2
The Django Web Application Framework 2The Django Web Application Framework 2
The Django Web Application Framework 2
 
The Django Web Application Framework 2
The Django Web Application Framework 2The Django Web Application Framework 2
The Django Web Application Framework 2
 
PyCon APAC - Django Test Driven Development
PyCon APAC - Django Test Driven DevelopmentPyCon APAC - Django Test Driven Development
PyCon APAC - Django Test Driven Development
 
The Django Web Application Framework 2
The Django Web Application Framework 2The Django Web Application Framework 2
The Django Web Application Framework 2
 
Building a Portfolio With Custom Post Types
Building a Portfolio With Custom Post TypesBuilding a Portfolio With Custom Post Types
Building a Portfolio With Custom Post Types
 
DJ-06-Views-Templates.pptx
DJ-06-Views-Templates.pptxDJ-06-Views-Templates.pptx
DJ-06-Views-Templates.pptx
 
Django crush course
Django crush course Django crush course
Django crush course
 
Django
DjangoDjango
Django
 
A Basic Django Introduction
A Basic Django IntroductionA Basic Django Introduction
A Basic Django Introduction
 

Dernier

🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
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...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
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGSujit Pal
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
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 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 

Dernier (20)

🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
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...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...
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAG
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
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 2024The 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
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 

Django

  • 1. Django Web Framework 김형용 , 이정민 Framework 2.1
  • 2. Django • High-level Python Web Framework • Develop fast • Automate the repetitive stuff • Follow best practices
  • 3. History • Lawrence Journal-World ( http://www.ljworld.com) • by World Online Developers (A...) • LJWorld.com • Lawrence.com • KUsports.com
  • 4. “Django” 어떻게 읽어요 ? • 당고 (X) • 디장고 (X) • 장고 (?) • 쟁고 (?) • Django Reinhardt
  • 5. Installation • Python 2.3+ • Database: PostgreSQL, MySQL, SQLite3 • Python DB Interface: psycopg, MySQLdb, pysqlite • Django
  • 6. Install Python • http://www.python.org/download/releases/ • http://www.python.org/download/releases/ • Windows.. PATH – c:python24 – c:python24scripts (django-admin.py)
  • 7. Install SQLite3, pysqlite2 • SQLite3 • http://www.sqlite.org/download.html • pysqlite2 – http://pysqlite.org/ – python setup.py install
  • 8. Install Django (0.95) • http://www.djangoproject.com/download/ – tar xvzf Django-0.95.tar.gz – cd Django-0.95 – sudo python setup.py install
  • 10. Project (site) : framework21 /admin/ Application : admin Application : admin Database Application : admin /blog/ /phonebook/ Application : blog Application : phonebook
  • 11. startproject • django-admin.py framework21 framework21 __init__.py manage.py  scripts/* settings.py  config/* urls.py  routes.rb Django RoR
  • 12. startapp cd framework21 ./manage.py startapp blog framework21/phonebook __init__.py models.py  app/models/* templates  app/views/* views.py  app/controllers/* urls.py RoR
  • 13. Create Model • from django.db import models • class Person(models.Model): • name = models.CharField(maxlength=20) • phone_number = PhoneNumberField() • note = TextField() • def __str__(self): • return self.name • class Admin: • pass
  • 14. Activating model(Application) • settings.py  INSTALLED_APPS • manage.py syncdb
  • 15. Play with Model API • from phonebook.models import * • p = Person(name=u’ 김형용’ , phone_number=‘010-123-4567’, note=u‘ 안녕하세요 .’) • p.save() # insert • p = Person(name=u’ 이정민’ , phone_number=‘010-123-1234’, note=u‘9000+ 일 솔로인생’ ) • p.save() # insert • Person.objects.all() # ‘ 김형용’ , ‘ 이정민’ • p = Person.objects.get(name=‘ 김형용’ ) • p.note += u’ 여자친구 구합니다 .’ • p.save() # update
  • 16. admin interface. • settings.py  INSTALLED_APPS • manage.py syncdb • manage.py runserver • http://localhost:8000/ • http://localhost:8000/admin/
  • 17. URL design • urls.py • project-level URL configuration • application-level URL configuration • URL -> view(callback)
  • 18. View • request, response • decide which data is presented , • delegate to template how the data is presented
  • 19. Stub view • from django.http import HttpResponse • def listing(request): • objects = Post.objects.all() • … template…  pass context (dict) • return HttpResponse(…)
  • 20. Template • how the data is presented
  • 21. Template • {{ variable }} • {{ variable|filter }} (O) • {% tag %} – {% if … %} … {% endif %} – {% for .. in .. %} … {% endfor %} • {% extends “base.html %}
  • 22.
  • 24. URL Resolver blog/urls.py urlpatterns = patterns(‘blog.views', … (r'^blog/$', ‘post_list'), (r'^blog/new/$', ‘post_new'), (r'^blog/(?P<post_id>d+)/$', ‘post_detail'), …
  • 25. URL Resolver blog/urls.py urlpatterns = patterns('blog.views', … (r'^blog/$', ‘post_list'), (r'^blog/new/$', ‘post_new'), (r'^blog/(?P<post_id>d+)/$', ‘post_detail'), …
  • 26. URL Resolver view blog/urls.py urlpatterns = patterns('blog.views', … (r'^blog/$', ‘post_list'), (r'^blog/new/$', ‘post_new'), (r'^blog/(?P<post_id>d+)/$', ‘post_detail'), … blog.views.post_detail
  • 27. URL Resolver view blog/urls.py urlpatterns = patterns('blog.views', … (r'^blog/$', ‘post_list'), (r'^blog/new/$', ‘post_new'), (r'^blog/(?P<post_id>d+)/$', ‘post_detail'), … blog.views.post_detail(post_id=‘2’)
  • 28. URL Resolver view blog/views.py def post_detail(request, post_id): post = Blog.objects.get(pk=post_id) … blog.views.post_detail(post_id=‘2’)
  • 29. model URL Resolver view blog/views.py def post_detail(request, post_id): post = Post.objects.get(pk=post_id) …
  • 30. URL Resolver view Django blog/views.py template def post_detail(request, post_id): post = Blog.objects.get(pk=post_id) t = loader.get_template(‘blog_detail.html’) … blog/templates/blog_detail.html
  • 31. URL Resolver view Django blog/views.py template def post_detail(request, post_id): post = Blog.objects.get(pk=post_id) t = loader.get_template(‘blog_detail.html’) c = Context({‘post’: post}) html = t.render(c) … blog/templates/blog_detail.html
  • 32. URL Resolver view Django blog/templates/blog_detail.html template <h1> {{ post.title }} </h1> <p> {{ post.content|restructuredText }} </p> Comments: <ul> {% for comment in post.comments %} <li> {{ comment.who }}: {{ comment.content }} </li> {% endfor %} </ul> Context({‘post’: post})
  • 33. URL Resolver view Django blog/templates/blog_detail.html template <h1> {{ post.title }} </h1> <p> {{ post.content|restructuredText }} </p> Comments: <ul> {% for comment in post.comments %} <li> {{ comment.who }}: {{ comment.content }} </li> {% endfor %} </ul> <h1> 여자친구 구함 </h1> <p> 20 세 이상 신체건강한 대한민국… </p> Comments: <ul> <li> 이정민 : 좋은 결과 있길바랍니다 . </li> </ul>
  • 34. URL Resolver view blog/views.py def post_detail(request, post_id): post = Blog.objects.get(pk=post_id) t = loader.get_template(‘blog_detail.html’) c = Context({‘post’: post}) html = t.render(c) return HttpResponse(html)
  • 35. URL Resolver view blog/views.py def post_detail(request, post_id): post = Blog.objects.get(pk=post_id) t = loader.get_template(‘blog_detail.html’) c = Context({‘post’: post}) html = t.render(c) return HttpResponse(html) OR
  • 36. URL Resolver view blog/views.py def post_detail(request, post_id): post = Blog.objects.get(pk=post_id) t = loader.get_template(‘blog_detail.html’) c = Context({‘post’: post}) html = t.render(c) return HttpResponse(html) OR def post_detail(request, post_id): post = Blog.objects.get(pk=post_id) return render_to_response(‘blog_detail.html’, {‘post’: post})
  • 37.
  • 38. model URL view Resolver Django template
  • 39. Where is MIDDLEWARE? mid.process_view(request, view_func, view_args, view_kwargs) mid.process_request(request) model URL view Resolver Django template mid.process_response(request, response)
  • 40. Server arrangement • Standalone • mod_python • FastCGI • SCGI • Twisted
  • 41. Conclusion • Written in python • Easy admin page • Elegant URL design • Template • Fast, easy, powerful web development with Django
  • 42. 이런저런 이야기 • Guido’s preference • Korean Django Community • GAVI : Genome Ajax Viewer • GMP study • http://code.djangoproject.com/ticket/2613
  • 43. Getting Involved • http://djangoproject.com/documentation/ • http://code.djangoproject.com/ • http://groups.google.com/group/django-user • http://groups.google.com/group/django-develope

Notes de l'éditeur

  1. World Online 의 개발자들이 Django 를 만듦 . 2 년 동안 위 사이트들과 다른 프로젝트를 만드는데 Django 를 사용함 . 위 사이트들은 newspaper 사이트 . Andrian Holovaty Jacob Kaplan-Moss Simon Willison Wilson Miner
  2. 장고 개발자 andrian 이 기타 치는걸 좋아함 . 아마 Django Reinhardt 의 기타 연주법을 좋아하는것에서 이름이 유래됐을것이라고 함 . djangoproject.com 에서 이름의 유래에 대해서 해명 (?) 안하고 있음 Django Reinhardt: 본명 Jean Baptiste Reinhardt. 벨기에 리벨시 출생 . 18 세 때 화상을 입어 왼손 손가락 두 개의 기능을 상실하였으나 , 유랑생활을 하는 동안 기타를 독습하여 1931 년 프랑스 재즈계에 등장 , 1934 년 파리에서 S. 그라펠리 와 함께 ‘ 핫클럽 5 중주단 (Quintette du Hot Club de France) ’ 을 조직하고 독특한 기교와 광시곡 스타일의 기타 솔로로 , 미국에까지 알려졌다 . 1946 년 미국으로 건너가 D. 에린튼악단과 공연하였으며 , 《구름》 등의 작곡으로 뛰어난 재능을 보였다 .
  3. 윈도우 사용자라면 next, next, next, .. MacOSX 는 아마 기본적으로 깔릴테고 Linux/BSD 에서는 패키지로 제공 기타 Unix 는 ./configure; make; make install 2.5 에서는 테스트해보지 못했음 . (joke): 사용해보고 잘 되면 알려주세요 ~ =3=3
  4. SQLite3: 윈도우라면 zip 파일을 PATH 상의 디렉토리에 풀어주는 것으로 끝 . pysqlite2 - 윈도우라면 .exe 파일 다운받고 클릭 - 기타 : python setup.py install
  5. django-admin.py - 프로젝트 / 어플리케이션 생성 - DB 관리 커맨트 - 개발용 웹서버 시작 - 테스트 구동 manage.py: django-admin.py 과 같은 기능 (DJANGO_SETTINGS_MODULE 설정할 필요 없음 ) ( 루비의 scripts/*) settings.py: project 의 전반적인 설정 (DB, Root URL, Application, ..) (Ruby 의 conf/database.yml, conf/environment.rb) urls.py: URL mapping (Ruby 의 routes.rb 보다 세세하게 ...)
  6. models.py - ORM views.py - controller , Python callback function for a particular URL MVC - MTV
  7. PhoneNumberField, EmailField, URLField 같이 DB 차원의 Low-level … . 이 아닌 사용자입장에서 모델링 가능 .. 적절한 validation 도 자동으로 됨
  8. startproject startapp settings.py, urls.py models.py 복사 manage.py syncdb manage.py runserver http://localhost:8000/admin/
  9. A template is simply a text file. It can generate any text-based format (HTML, XML, CSV, etc.). A template contains variables , which get replaced with values when the template is evaluated, and tags , which control the logic of the template.
  10. 앞부분은 전반적 개념에 대한 설명이었다 …… … 데이터의 흐름 …
  11. . -&gt; attribute, method, index, key-value
  12. Main site http://djangoproject.com/ code site (trac) http://code.djangoproject.com/