понедельник, 26 мая 2008 г.

Django и Google App Engine: шаблоны и статические файлы

В предыдущем посте было рассказано, как создать простейший проект на GAE + Django. Сейчас давайте попробуем подключить к проекту шаблоны Django и поддержку статических файлов - таблиц стилей, скриптов и картинок.

Наш Django проект будет называтся dvk, и содержать приложение main. В папке приложения создаем каталог для шаблонов templates:
dvk/
main.py
app.yaml
    dvk/
    manage.py
    settings.py
    urls.py
      main/
      __init__.py
      models.py
      views.py
        templates/


Чтобы среда знала, где искать файлы шаблонов, нужно прописать путь в файле настроек проекта settings.py
import os
ROOT_PATH = os.path.dirname(__file__)

TEMPLATE_DIRS = (
  ROOT_PATH + "/main/templates",
)


Теперь можно создать файл шаблона main.html в папке шаблонов. Наш шаблон не будет делать ничего сверх полезного :) Просто скажем браузеру "Hello world!"
Hello world!


Для вывода страницы создадим процедуру-контроллер в файле views.py и привяжем её к обработке запроса главной страницы сайта в urls.py
#dvk/dvk/main/views.py
from django.shortcuts import render_to_response

def index(request):
  return render_to_response("main.html")


#dvk/dvk/urls.py
from django.conf.urls.defaults import *

urlpatterns = patterns("",
  (r"^$", "dvk.main.views.index"),
)


Теперь можно протестировать наше приложение - dev_appserver.py dvk
Откройте браузер с адресом http://127.0.0.1:8080/ и у вас отобразится "Hello world!" :-)

Чтобы Google App Engine обрабатывал статические файлы, нужно в файле настроек GAE приложения включить в секцию handlers параметр static_dir:
application: dvk
version: 1
runtime: python
api_version: 1

...

handlers:
- url: /static
static_dir: static

...


Параметр url указывает, по какому адресу будут доступны файлы, а значение параметра static_dir - имя и расположение папки. В нашем примере она располагается в корне проекта и имеет имя static. Теперь в шаблонах можно обращаться к статическим файлам, например для загрузки таблицы стилей: link href="/static/main.css" type="text/css" rel="stylesheet"

Использованные материалы:
Django on Google App Engine: Templates and static files
Configuring an App

Комментариев нет: