Django
- 4. “ Django” 어떻게 읽어요 ? 당고 (X) 디장고 (X) 장고 (?) 쟁고 (?) Django Reinhardt
- 7. Install SQLite3, pysqlite 2 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 Database Application : admin Application : admin Application : admin /admin/ Application : blog /blog/ Application : phonebook /phonebook/
- 11. startproject django-admin.py framework21 framework21 __init__.py manage.py scripts/* settings.py config/* urls.py routes.rb RoR Django
- 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
- 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
- 17. URL design urls.py project-level URL configuration application-level URL configuration URL -> view(callback)
- 19. Stub view from django.http import HttpResponse def listing(request): objects = Post.objects.all() … template… pass context (dict) return HttpResponse(…)
- 21. Template {{ variable }} {{ variable|filter }} (O) {% tag %} {% if … %} … {% endif %} {% for .. in .. %} … {% endfor %} {% extends “base.html %}
- 24. URL Resolver blog/urls.py urlpatterns = patterns(‘blog.views', … (r'^blog/$', ‘post_list'), (r'^blog/new/$', ‘post_new'), (r'^blog/(?P<post_id>+)/$', ‘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>+)/$' , ‘post_detail'), …
- 26. URL Resolver blog/urls.py urlpatterns = patterns( ' blog.views ' , … (r'^blog/$', ‘post_list'), (r'^blog/new/$', ‘post_new'), (r'^blog/(?P<post_id>+)/$', ‘post_detail'), … blog.views.post_detail view
- 27. URL Resolver blog/urls.py urlpatterns = patterns( ' blog.views ', … (r'^blog/$', ‘post_list'), (r'^blog/new/$', ‘post_new'), (r'^blog/ (?P<post_id>+) /$', ‘post_detail'), … blog.views.post_detail(post_id=‘2’) view
- 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. URL Resolver view blog/views.py def post_detail(request, post_id): post = Post.objects.get(pk=post_id) … model
- 30. 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’) … Django template blog/templates/blog_detail.html
- 31. 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) … Django template blog/templates/blog_detail.html
- 32. URL Resolver view blog/templates/blog_detail.html <h1> {{ post .title }} </h1> <p> {{ post.content|restructuredText }} </p> Comments: <ul> {% for comment in post.comments %} <li> {{ comment.who }}: {{ comment.content }} </li> {% endfor %} </ul> Django template Context({‘post’: post})
- 33. URL Resolver view blog/templates/blog_detail.html <h1> {{ post.title }} </h1> <p> {{ post.content|restructuredText }} </p> Comments: <ul> {% for comment in post.comments %} <li> {{ comment.who }}: {{ comment.content }} </li> {% endfor %} </ul> Django template <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) def post_detail(request, post_id): post = Blog.objects.get(pk=post_id) return render_to_response(‘blog_detail.html’, {‘post’: post}) OR
- 39. Where is MIDDLEWARE? URL Resolver view Django template model mid.process_request(request) mid.process_view(request, view_func, view_args, view_kwargs) mid.process_response(request, response)
- 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 -developers