SlideShare ist ein Scribd-Unternehmen logo
1 von 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

Weitere ähnliche Inhalte

Was ist angesagt?

Web development with django - Basics Presentation
Web development with django - Basics PresentationWeb development with django - Basics Presentation
Web development with django - Basics PresentationShrinath Shenoy
 
12 tips on Django Best Practices
12 tips on Django Best Practices12 tips on Django Best Practices
12 tips on Django Best PracticesDavid Arcos
 
Introduction to django
Introduction to djangoIntroduction to django
Introduction to djangoIlian Iliev
 
A Basic Django Introduction
A Basic Django IntroductionA Basic Django Introduction
A Basic Django IntroductionGanga Ram
 
Django Introduction & Tutorial
Django Introduction & TutorialDjango Introduction & Tutorial
Django Introduction & Tutorial之宇 趙
 
Django Architecture Introduction
Django Architecture IntroductionDjango Architecture Introduction
Django Architecture IntroductionHaiqi Chen
 
Introduction To Django
Introduction To DjangoIntroduction To Django
Introduction To DjangoJay Graves
 
Django - Python MVC Framework
Django - Python MVC FrameworkDjango - Python MVC Framework
Django - Python MVC FrameworkBala 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
 
Angular tutorial
Angular tutorialAngular tutorial
Angular tutorialRohit Gupta
 
Top 5 Frameworks In Python | Django, Web2Py, Flask, Bottle, CherryPy | Edureka
Top 5 Frameworks In Python | Django, Web2Py, Flask, Bottle, CherryPy | EdurekaTop 5 Frameworks In Python | Django, Web2Py, Flask, Bottle, CherryPy | Edureka
Top 5 Frameworks In Python | Django, Web2Py, Flask, Bottle, CherryPy | EdurekaEdureka!
 
Flask Introduction - Python Meetup
Flask Introduction - Python MeetupFlask Introduction - Python Meetup
Flask Introduction - Python MeetupAreski Belaid
 
Quick flask an intro to flask
Quick flask   an intro to flaskQuick flask   an intro to flask
Quick flask an intro to flaskjuzten
 

Was ist angesagt? (20)

Web development with django - Basics Presentation
Web development with django - Basics PresentationWeb development with django - Basics Presentation
Web development with django - Basics Presentation
 
django
djangodjango
django
 
12 tips on Django Best Practices
12 tips on Django Best Practices12 tips on Django Best Practices
12 tips on Django Best Practices
 
Introduction to django
Introduction to djangoIntroduction to django
Introduction to django
 
A Basic Django Introduction
A Basic Django IntroductionA Basic Django Introduction
A Basic Django Introduction
 
Django Introduction & Tutorial
Django Introduction & TutorialDjango Introduction & Tutorial
Django Introduction & Tutorial
 
Django Architecture Introduction
Django Architecture IntroductionDjango Architecture Introduction
Django Architecture Introduction
 
Introduction To Django
Introduction To DjangoIntroduction To Django
Introduction To Django
 
Django - Python MVC Framework
Django - Python MVC FrameworkDjango - Python MVC Framework
Django - Python MVC Framework
 
Threads in python
Threads in pythonThreads in python
Threads in python
 
Web Development with Python and Django
Web Development with Python and DjangoWeb Development with Python and Django
Web Development with Python and Django
 
Rest api with Python
Rest api with PythonRest api with Python
Rest api with Python
 
DJango
DJangoDJango
DJango
 
Angular Directives
Angular DirectivesAngular Directives
Angular Directives
 
Flask – Python
Flask – PythonFlask – Python
Flask – Python
 
Angular tutorial
Angular tutorialAngular tutorial
Angular tutorial
 
Top 5 Frameworks In Python | Django, Web2Py, Flask, Bottle, CherryPy | Edureka
Top 5 Frameworks In Python | Django, Web2Py, Flask, Bottle, CherryPy | EdurekaTop 5 Frameworks In Python | Django, Web2Py, Flask, Bottle, CherryPy | Edureka
Top 5 Frameworks In Python | Django, Web2Py, Flask, Bottle, CherryPy | Edureka
 
Flask Introduction - Python Meetup
Flask Introduction - Python MeetupFlask Introduction - Python Meetup
Flask Introduction - Python Meetup
 
Django Girls Tutorial
Django Girls TutorialDjango Girls Tutorial
Django Girls Tutorial
 
Quick flask an intro to flask
Quick flask   an intro to flaskQuick flask   an intro to flask
Quick flask an intro to flask
 

Andere mochten auch

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
 

Andere mochten auch (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
 

Ähnlich wie 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
 
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
 

Ähnlich wie 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
 
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
 

Kürzlich hochgeladen

New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
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
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
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
 
"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
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
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
 
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
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 

Kürzlich hochgeladen (20)

New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
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
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 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
 
"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...
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
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
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 

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

Hinweis der Redaktion

  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/