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.
 
Django for Beginners
Django for BeginnersDjango for Beginners
Django for BeginnersJason Davies
 
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!
 
Introduction To Django
Introduction To DjangoIntroduction To Django
Introduction To DjangoJay Graves
 
JavaScript - Chapter 10 - Strings and Arrays
 JavaScript - Chapter 10 - Strings and Arrays JavaScript - Chapter 10 - Strings and Arrays
JavaScript - Chapter 10 - Strings and ArraysWebStackAcademy
 
Web development with django - Basics Presentation
Web development with django - Basics PresentationWeb development with django - Basics Presentation
Web development with django - Basics PresentationShrinath Shenoy
 
Introduction to Django REST Framework, an easy way to build REST framework in...
Introduction to Django REST Framework, an easy way to build REST framework in...Introduction to Django REST Framework, an easy way to build REST framework in...
Introduction to Django REST Framework, an easy way to build REST framework in...Zhe Li
 
Django - Python MVC Framework
Django - Python MVC FrameworkDjango - Python MVC Framework
Django - Python MVC FrameworkBala Kumar
 
Django Tutorial | Django Web Development With Python | Django Training and Ce...
Django Tutorial | Django Web Development With Python | Django Training and Ce...Django Tutorial | Django Web Development With Python | Django Training and Ce...
Django Tutorial | Django Web Development With Python | Django Training and Ce...Edureka!
 
JavaScript
JavaScriptJavaScript
JavaScriptSunil OS
 
Django REST Framework
Django REST FrameworkDjango REST Framework
Django REST FrameworkLoad Impact
 
Django Architecture Introduction
Django Architecture IntroductionDjango Architecture Introduction
Django Architecture IntroductionHaiqi Chen
 
A Basic Django Introduction
A Basic Django IntroductionA Basic Django Introduction
A Basic Django IntroductionGanga Ram
 
Basic Crud In Django
Basic Crud In DjangoBasic Crud In Django
Basic Crud In Djangomcantelon
 

Tendances (20)

django
djangodjango
django
 
Introduction to Django
Introduction to DjangoIntroduction to Django
Introduction to Django
 
Django for Beginners
Django for BeginnersDjango for Beginners
Django for Beginners
 
Django Girls Tutorial
Django Girls TutorialDjango Girls Tutorial
Django Girls Tutorial
 
DJango
DJangoDJango
DJango
 
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...
 
Introduction To Django
Introduction To DjangoIntroduction To Django
Introduction To Django
 
Rest api with Python
Rest api with PythonRest api with Python
Rest api with Python
 
JavaScript - Chapter 10 - Strings and Arrays
 JavaScript - Chapter 10 - Strings and Arrays JavaScript - Chapter 10 - Strings and Arrays
JavaScript - Chapter 10 - Strings and Arrays
 
Web development with django - Basics Presentation
Web development with django - Basics PresentationWeb development with django - Basics Presentation
Web development with django - Basics Presentation
 
Introduction to Django REST Framework, an easy way to build REST framework in...
Introduction to Django REST Framework, an easy way to build REST framework in...Introduction to Django REST Framework, an easy way to build REST framework in...
Introduction to Django REST Framework, an easy way to build REST framework in...
 
Django - Python MVC Framework
Django - Python MVC FrameworkDjango - Python MVC Framework
Django - Python MVC Framework
 
Python programming : Files
Python programming : FilesPython programming : Files
Python programming : Files
 
Django Tutorial | Django Web Development With Python | Django Training and Ce...
Django Tutorial | Django Web Development With Python | Django Training and Ce...Django Tutorial | Django Web Development With Python | Django Training and Ce...
Django Tutorial | Django Web Development With Python | Django Training and Ce...
 
JavaScript
JavaScriptJavaScript
JavaScript
 
Django REST Framework
Django REST FrameworkDjango REST Framework
Django REST Framework
 
Free django
Free djangoFree django
Free django
 
Django Architecture Introduction
Django Architecture IntroductionDjango Architecture Introduction
Django Architecture Introduction
 
A Basic Django Introduction
A Basic Django IntroductionA Basic Django Introduction
A Basic Django Introduction
 
Basic Crud In Django
Basic Crud In DjangoBasic Crud In Django
Basic Crud In Django
 

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

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

Dernier

SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DaySri Ambati
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 

Dernier (20)

SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 

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/