건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.
-
Upload
kale-fairless -
Category
Documents
-
view
239 -
download
4
Transcript of 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.
![Page 1: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/1.jpg)
건전지로 달리는쟝고 세미나
![Page 2: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/2.jpg)
정재성
![Page 3: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/3.jpg)
Django
![Page 4: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/4.jpg)
Web Framework
![Page 5: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/5.jpg)
CGI
![Page 6: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/6.jpg)
#!/usr/bin/env python
import MySQLdb
print "Content-Type: text/html\n"print "<html><head><title>Books</title></head>"print "<body>"print "<h1>Books</h1>"print "<ul>"
connection = MySQLdb.connect(user='me', passwd='letmein', db='my_db')cursor = connection.cursor()cursor.execute("SELECT name FROM books ORDER BY pub_date DESC LIMIT 10")
for row in cursor.fetchall(): print "<li>%s</li>" % row[0]
print "</ul>"print "</body></html>"
connection.close()
![Page 7: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/7.jpg)
Don’t reinvent the wheel.
![Page 8: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/8.jpg)
MVC
![Page 9: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/9.jpg)
#!/usr/bin/env python
import MySQLdb
print "Content-Type: text/html\n"print "<html><head><title>Books</title></head>"print "<body>"print "<h1>Books</h1>"print "<ul>"
connection = MySQLdb.connect(user='me', passwd='letmein', db='my_db')cursor = connection.cursor()cursor.execute("SELECT name FROM books ORDER BY pub_date DESC LIMIT 10")
for row in cursor.fetchall(): print "<li>%s</li>" % row[0]
print "</ul>"print "</body></html>"
connection.close()
![Page 10: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/10.jpg)
models.pyviews.pyurls.py
template.html
![Page 11: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/11.jpg)
# models.py (the database tables)
from django.db import models
class Book(models.Model): name = models.CharField(max_length=50) pub_date = models.DateField()
![Page 12: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/12.jpg)
# views.py (the business logic)
from django.shortcuts import render_to_responsefrom models import Book
def latest_books(request): book_list = Book.objects.order_by('-pub_date')[:10] return render_to_response('latest_books.html', {'book_list': book_list})
![Page 13: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/13.jpg)
# urls.py (the URL configuration)
from django.conf.urls.defaults import *import views
urlpatterns = patterns('', (r'^latest/$', views.latest_books),)
![Page 14: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/14.jpg)
# latest_books.html (the template)
<html><head><title>Books</title></head><body><h1>Books</h1><ul>{% for book in book_list %}<li>{{ book.name }}</li>{% endfor %}</ul></body></html>
![Page 15: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/15.jpg)
Loosely coupled
![Page 16: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/16.jpg)
History
![Page 17: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/17.jpg)
Install
![Page 18: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/18.jpg)
Install Python
![Page 19: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/19.jpg)
Install Django
![Page 20: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/20.jpg)
http://www.djangoproject.-com/
![Page 21: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/21.jpg)
$ tar xzvf Django-*.tar.gz $ cd Django-* $ python setup.py install
![Page 22: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/22.jpg)
Databases
코끼리 , 나뭇잎돌고래 , 11g
![Page 23: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/23.jpg)
Databases
PostgreSQL, SQLiteMySQL, Oracle
![Page 24: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/24.jpg)
Starting a Project
![Page 25: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/25.jpg)
$ django-admin.py startproject courserating
![Page 26: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/26.jpg)
courserating/ __init__.pymanage.pysettings.pyurls.py
![Page 27: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/27.jpg)
Running DEV Server
![Page 28: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/28.jpg)
$ python manage.py runserver
![Page 29: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/29.jpg)
$ python manage.py runserver Validating models... 0 errors found
Django version 1.2.1, using settings 'courserating.settings' Development server is running at http://127.0.0.1:8000/ Quit the server with CONTROL-C.
![Page 30: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/30.jpg)
![Page 31: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/31.jpg)
Views and URLconfs
![Page 32: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/32.jpg)
First Django-Powered Page
![Page 33: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/33.jpg)
# views.pyfrom django.http import HttpResponse
def hello(request): return HttpResponse("Hello world")
![Page 34: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/34.jpg)
# urls.pyfrom django.conf.urls.defaults import *from views import hello
urlpatterns = patterns('', ('^hello/$', hello),)
![Page 35: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/35.jpg)
![Page 36: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/36.jpg)
![Page 37: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/37.jpg)
# settings.py
... ROOT_URLCONF = 'courserating.urls' ...
![Page 38: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/38.jpg)
1. Request /hello/2. Look at ROOT_URLCONF3. Look at URLpatterns4. Match then call the associ-ated view function5. The view function returns as HttpResponse6. Convert HttpResponse to the proper HTTP response
![Page 39: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/39.jpg)
Dynamic Content
![Page 40: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/40.jpg)
>>> import datetime>>> now = datetime.datetime.now()>>> nowdatetime.datetime(2010, 6, 5, 1, 15, 20, 840166)>>> print now2010-06-05 01:15:20.840166
![Page 41: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/41.jpg)
# views.pyfrom django.http import HttpResponseimport datetime
def current(request): now = datetime.datetime.now() html = "<html><body>Now %s.</body></html>" % now return HttpResponse(html)
![Page 42: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/42.jpg)
# urls.pyfrom django.conf.urls.defaults import *from views import hello, current
urlpatterns = patterns('', ('^hello/$', hello), ('^current/$', current),)
![Page 43: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/43.jpg)
![Page 44: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/44.jpg)
# urls.pyfrom django.conf.urls.defaults import *from views import hello, current
urlpatterns = patterns('', ('^hello/$', hello), (‘^current/$', current), (‘^another_current/$', current),)
![Page 45: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/45.jpg)
Dynamic URLs
![Page 46: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/46.jpg)
# urls.pyurlpatterns = patterns('', ('^time/$', current), ('^time/plus/1/$', one_hour_ahead), ('^time/plus/2/$', two_hours_ahead), ('^time/plus/3/$', three_hours_ahead), ('^time/plus/4/$', four_hours_ahead),)
![Page 47: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/47.jpg)
urlpatterns = patterns('', # ... (r'^time/plus/\d+/$', hours_ahead), # ...)
![Page 48: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/48.jpg)
urlpatterns = patterns('', # ... (r'^time/plus/(\d{1,2})/$', hours_ahead), # ... )
![Page 49: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/49.jpg)
# views.pydef hours_ahead(request, offset): try: offset = int(offset) except ValueError: raise Http404() dt = datetime.datetime.now() + date-time.timedelta(hours=offset) html = "<html><body>In %s hour(s), it will be %s.</body></html>" % (offset, dt) return HttpResponse(html)
![Page 50: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/50.jpg)
![Page 51: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/51.jpg)
Templates
![Page 52: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/52.jpg)
# views.pyfrom django.http import HttpResponseimport datetime
def current(request): now = datetime.datetime.now() html = "<html><body>Now %s.</body></html>" % now return HttpResponse(html)
![Page 53: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/53.jpg)
>>> from django.conf import settings >>> settings.configure()
>>> from django.template import Template, Con-text>>> t = Template('My ID is {{ name }}.')>>> c = Context({'name': ‘hodduc'})>>> print t.render(c)My ID is hodduc.>>> c = Context({'name': ' r4t5y6'})>>> print t.render(c)My ID is r4t5y6.>>> print t <django.template.Template object at 0x7fb-b238c76d0>
![Page 54: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/54.jpg)
>>> from django.template import Context>>> c = Context({"foo": "bar"})>>> c['foo']'bar'>>> del c['foo']>>> c['foo']Traceback (most recent call last): ...KeyError: 'foo'>>> c['newvariable'] = 'hello'>>> c['newvariable']'hello'
![Page 55: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/55.jpg)
>>> from django.template import Template, Con-text>>> person = {'name': ‘Yoona', 'age': ‘21'}>>> t = Template('{{ person.name.upper }} is {{ person.age }} years old.')>>> c = Context({'person': person})>>> t.render(c)u‘YOONA is 21 years old.'
![Page 56: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/56.jpg)
More Templates
![Page 57: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/57.jpg)
{% if girlgeneration %} <strong>I Love You!</strong> {% else %} <p>Then give it to dogs</p> {% if wondergirls %} <p>Jimotmi</p> {% endif %}{% endif %}
![Page 58: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/58.jpg)
{% for girl in girlgeneration %} <h1>{{ girl.name }}</h1> <ul> {% for a in girl.recent_solo_albums reversed %} <li>{{ a.name }}</li> {% endfor %} </ul>{% endfor %}
![Page 59: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/59.jpg)
{% if girlgeneration == wondergirls %} <p>Really?!</p> {% else %} <p>That’s right!</p>{% endif %}
![Page 60: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/60.jpg)
{% if variable > 1 %}{% if variable <= 1.23 %}{% if variable != 'foo' %}{% if variable == "foo" %}{% if variable == True %}{% if variable == [1, 2, 3] %}{% if variable == {'key': 'value'} %}
![Page 61: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/61.jpg)
{{ name|lower }}{{ my_list|first|upper }}{{ my_list|length }}{{ bio|truncatewords:"30" }}{{ pub_date|date:"F j, Y" }}{{ codes|addslashes }}{{ html|striptags }}{{ value|default:"nothing" }}
![Page 62: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/62.jpg)
{# World of Warcraft #} Hello
![Page 63: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/63.jpg)
Templates in Views
![Page 64: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/64.jpg)
# views.pyfrom django.http import HttpResponseimport datetime
def current(request): now = datetime.datetime.now() html = "<html><body>Now %s.</body></html>" % now return HttpResponse(html)
![Page 65: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/65.jpg)
# views.pyfrom django.template import Template, Con-textfrom django.http import HttpResponseimport datetime
def current(request): now = datetime.datetime.now() t = Template("<html><body>It is now {{ current_date }}.</body></html>") html = t.render(Context({'current_date': now})) return HttpResponse(html)
![Page 66: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/66.jpg)
# /templates/current.html
<html><body>It is now {{ current_date }}.</body></html>
![Page 67: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/67.jpg)
# views.pyfrom django.template import Template, Con-textfrom django.http import HttpResponseimport datetime
def current(request): now = datetime.datetime.now() fp = open('/templates/current.html') t = Template(fp.read()) fp.close() html = t.render(Context({'current_date': now})) return HttpResponse(html)
![Page 68: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/68.jpg)
# settings.pyTEMPLATE_DIRS = ( '/templates', )
![Page 69: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/69.jpg)
# views.pyfrom django.template.loader import get_templatefrom django.template import Contextfrom django.http import HttpResponseimport datetime
def current(request): now = datetime.datetime.now() t = get_template('current.html') html = t.render(Context({'current_date': now})) return HttpResponse(html)
![Page 70: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/70.jpg)
# views.pyfrom django.shortcuts import render_to_responseimport datetime
def current(request): now = datetime.datetime.now() return render_to_response('current.html', {'current_date': now})
![Page 71: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/71.jpg)
Reusing Templates
![Page 72: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/72.jpg)
# girlgeneration.html
<html><body>{% include 'members/tanggu.html' %}...</body><html>
# tanggu.html
<p>Romang</p>
![Page 73: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/73.jpg)
# base.html
<html><head> <title>{% block title %}{% end block %}</ti-tle></head><body> <h1>KAIST</h1> {% block content %}{% endblock %} {% block footer %} <p>Daejeon</p> {% endblock %}</body><html>
![Page 74: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/74.jpg)
# dorm.html
{% extends "base.html" %}{% block title %}Penalties{% endblock %}{% block content %}GG{% endblock %}
# maru.html
{% extends "base.html" %}{% block title %}Hell{% endblock %}{% block content %}Then give it to dogs!{% endblock %}
![Page 75: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/75.jpg)
내일은…
![Page 76: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/76.jpg)
Models
![Page 77: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/77.jpg)
Admin Sites
![Page 78: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/78.jpg)
Forms
![Page 79: 건전지로 달리는 쟝고 세미나. 정재성 Django Web Framework CGI.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551c593a5503467b488b56a8/html5/thumbnails/79.jpg)
Users