[컴][웹][파이썬] Django gear 사용하기





처음에 이녀석을 깔아서 다른 compiler 들(coffee, stylus) 을 설치해서 사용하려고 했다. 그런데 이 compiler 들이 결국 node.js 를 필요로 했다. 되도록 python 안에서 해결하려고 이걸 사용하려고 했던 것인데, 결국 node.js 를 사용해야 한다면, 굳이 django gear 를 사용해서 coffee / stylus 를 compile 하는 환경을 구현할 이유가 없을 듯 하다.



Django Gear 설치

pip install

$ pip install django-gears

INSTALLED_APPS

#settings.py

INSTALLED_APPS = (
    #  ...
    'django_gears',
    #  ...
)

개발용 urls

개발중 debug 용으로 쉽게 gear 로 처리된 결과를 확인할 수 있다. 이녀석은 GEAR_DEBUG 가 False 가 되면 empty 값이 된다고 한다.[참고]

from django_gears.urls import gears_urlpatterns

# url definitions here

urlpatterns += gears_urlpatterns()

근데 이녀석은 기본적으로 django 에 있는 녀석과 겹친다. 그래서 굳이 설정해 줄 필요가 있을 지 모르겠다. 굳이 사용하겠다면, gears_urlpatterns 를 조금 수정해야 할 것이다.





GEARS_DIR 정의하기

이부분은 아래 File System Finder 부분을 확인하자.




Finders

settings.py 에 아래처럼 Gear 에서 사용할 finder(파일을 찾는 녀석 이라고 생각하자.) 를 세팅해야 한다. 아래처럼 기본적으로 2개가 설정된다.
  • File System Finder
  • Application Finder


GEARS_FINDERS = (
    ('gears.finders.FileSystemFinder', {
        'directories': getattr(settings, 'GEARS_DIRS', ()),
    }),
    ('django_gears.finders.AppFinder', {}),
)


Application Finder

기본적으로 django gears 는 django 의 application 내에 있는 assets directory 를 뒤진다. 이 assets directory 들에 있는 녀서들의 directives 를 찾아서 작업한다. 이녀석을 Application Finder 라 부른다.

myapp1/
  assets/
    js/
      script.js
      app.js


File System Finder

GEARS_FINDERS 를 정의할 때 GEARS_DIRS 도 정의해줘야 하는데, 이 GEARS_DIR 에 정의된 directory 를 뒤진다.

import os
SITE_ROOT = os.path.realpath(os.path.dirname(__file__))
GEARS_DIRS = (
    os.path.join(SITE_ROOT, "assets"),
)





compile 을 위한 추가적인 설치

GEARS_COMPILERS

GEARS_COMPILERS = {
    '.styl': 'gears_stylus.StylusCompiler',
    '.coffee': 'gears_coffeescript.CoffeeScriptCompiler',
}

gears 관련 목록 에 compiler 들을 찾아 볼 수 있다. 자신이 사용할 compiler 들을 모두 pip install 해야 한다. 여기서는 styl 과 coffee 를 install 할 것이다.

$ pip install gears-coffeescript
$ pip install gears-stylus

주의할 점은 이것들이 전부 node.js 를 필요로 한다.[ref. 3]


GEARS_DEBUG

이 변수는 기본적으로 settings.DEBUG 를 따라간다. GEAR_DEBUG 가 True 일 때는 file들(.js/.css 등) 의 concatenation 을 하지 않는다.



example

django-gears


mine

# file direcotry 구조
project
 myapp1/
 project/
  settings.py
  urls.py
 static/
  js/
   jquery.js
   script.js
 templates/
  testGear.html
 manage.py



# project/settings.py
...
GEARS_ROOT = STATIC_ROOT    # deploy path, this is the default value, just for clarification
GEARS_DIRS = STATICFILES_DIRS    # to be searched
GEARS_COMPILERS = {
    '.styl': 'gears_stylus.StylusCompiler',
    '.coffee': 'gears_coffeescript.CoffeeScriptCompiler',
}



# project/urls.py
from django.views.generic import TemplateView

urlpatterns = [
    # for test
    url(r'^testgear/$', TemplateView.as_view(template_name='testGear.html')),
    ...
]


# templates/testGear.html
{% load gears %}
{% js_asset_tag "js/script.js" %}



# static/js/script.js
/* Dependencies:
 *= require jquery
 */
var a = a;



Reference

  1. Installation — Django Gears 0.7.1 documentation
  2. gears/gears · GitHub
  3. Gears 0.7.2 : Python Package Index




댓글 없음:

댓글 쓰기