SlideShare una empresa de Scribd logo
1 de 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

Más contenido relacionado

La actualidad más candente

Django Interview Questions and Answers
Django Interview Questions and AnswersDjango Interview Questions and Answers
Django Interview Questions and AnswersPython Devloper
 
A Basic Django Introduction
A Basic Django IntroductionA Basic Django Introduction
A Basic Django IntroductionGanga Ram
 
Python Django tutorial | Getting Started With Django | Web Development With D...
Python Django tutorial | Getting Started With Django | Web Development With D...Python Django tutorial | Getting Started With Django | Web Development With D...
Python Django tutorial | Getting Started With Django | Web Development With D...Edureka!
 
Django Introduction & Tutorial
Django Introduction & TutorialDjango Introduction & Tutorial
Django Introduction & Tutorial之宇 趙
 
Introduction to django
Introduction to djangoIntroduction to django
Introduction to djangoIlian Iliev
 
Angular - Chapter 7 - HTTP Services
Angular - Chapter 7 - HTTP ServicesAngular - Chapter 7 - HTTP Services
Angular - Chapter 7 - HTTP ServicesWebStackAcademy
 
What is Django | Django Tutorial for Beginners | Python Django Training | Edu...
What is Django | Django Tutorial for Beginners | Python Django Training | Edu...What is Django | Django Tutorial for Beginners | Python Django Training | Edu...
What is Django | Django Tutorial for Beginners | Python Django Training | Edu...Edureka!
 
Django Architecture Introduction
Django Architecture IntroductionDjango Architecture Introduction
Django Architecture IntroductionHaiqi Chen
 
Django Framework Overview forNon-Python Developers
Django Framework Overview forNon-Python DevelopersDjango Framework Overview forNon-Python Developers
Django Framework Overview forNon-Python DevelopersRosario Renga
 
Spring boot introduction
Spring boot introductionSpring boot introduction
Spring boot introductionRasheed Waraich
 
Python Generators
Python GeneratorsPython Generators
Python GeneratorsAkshar Raaj
 
Basic Crud In Django
Basic Crud In DjangoBasic Crud In Django
Basic Crud In Djangomcantelon
 

La actualidad más candente (20)

Programming with Python
Programming with PythonProgramming with Python
Programming with Python
 
django
djangodjango
django
 
Rest api with Python
Rest api with PythonRest api with Python
Rest api with Python
 
Django Girls Tutorial
Django Girls TutorialDjango Girls Tutorial
Django Girls Tutorial
 
Django Interview Questions and Answers
Django Interview Questions and AnswersDjango Interview Questions and Answers
Django Interview Questions and Answers
 
A Basic Django Introduction
A Basic Django IntroductionA Basic Django Introduction
A Basic Django Introduction
 
Python Django tutorial | Getting Started With Django | Web Development With D...
Python Django tutorial | Getting Started With Django | Web Development With D...Python Django tutorial | Getting Started With Django | Web Development With D...
Python Django tutorial | Getting Started With Django | Web Development With D...
 
Django Introduction & Tutorial
Django Introduction & TutorialDjango Introduction & Tutorial
Django Introduction & Tutorial
 
Django
DjangoDjango
Django
 
Introduction to django
Introduction to djangoIntroduction to django
Introduction to django
 
Angular - Chapter 7 - HTTP Services
Angular - Chapter 7 - HTTP ServicesAngular - Chapter 7 - HTTP Services
Angular - Chapter 7 - HTTP Services
 
What is Django | Django Tutorial for Beginners | Python Django Training | Edu...
What is Django | Django Tutorial for Beginners | Python Django Training | Edu...What is Django | Django Tutorial for Beginners | Python Django Training | Edu...
What is Django | Django Tutorial for Beginners | Python Django Training | Edu...
 
Django Architecture Introduction
Django Architecture IntroductionDjango Architecture Introduction
Django Architecture Introduction
 
Python programming
Python  programmingPython  programming
Python programming
 
Django Framework Overview forNon-Python Developers
Django Framework Overview forNon-Python DevelopersDjango Framework Overview forNon-Python Developers
Django Framework Overview forNon-Python Developers
 
Spring boot introduction
Spring boot introductionSpring boot introduction
Spring boot introduction
 
Python Generators
Python GeneratorsPython Generators
Python Generators
 
ORM in Django
ORM in DjangoORM in Django
ORM in Django
 
Basic Crud In Django
Basic Crud In DjangoBasic Crud In Django
Basic Crud In Django
 
Django by rj
Django by rjDjango by rj
Django by rj
 

Destacado

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
 

Destacado (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
 

Similar a 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
 
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
 
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
 
Python Code Camp for Professionals 1/4
Python Code Camp for Professionals 1/4Python Code Camp for Professionals 1/4
Python Code Camp for Professionals 1/4DEVCON
 

Similar a 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
 
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
 
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
 
Python Code Camp for Professionals 1/4
Python Code Camp for Professionals 1/4Python Code Camp for Professionals 1/4
Python Code Camp for Professionals 1/4
 

Último

Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
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
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
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
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...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
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
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
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 

Último (20)

Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
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
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
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
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 

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

Notas del editor

  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/