settings.py 를 template에서 사용하기 위해서는 기본적으로 context할때 값을 넣어 주는 수 밖에 없다.

    context = {'DEBUG': settings.DEBUG}

 
근데 view에서 매번 이것을 세팅해서 넘겨주는건 좀 아니지 않을까? :)

그래서 context_processor를 사용하여 모든 request의 context에 값을 세팅 할 수 있다.

 myapp/context_processors.py를 아래와 같이 작성하자.

def load_settings(request):

return {'DEBUG':settings.DEBUG} 


그리고 settings.py에 아래와 같이 CONTEXT_PROCESSOR를 등록한다.

 86 TEMPLATE_CONTEXT_PROCESSORS = (

 87         'myapp.context_processors.load_settings',

 88         'django.contrib.auth.context_processors.auth',
89 ) 

 
template에서의 사용법은 아래와 같다.

<div>{{DEBUG}}</div>



application으로 들어오는 모든 request를 Catch하기 때문에, 한번 해두면 어디서든 쓸 수 있다.

 

static file을 DJango Framework에서 사용하기 위한 설정

1. django.contrib.staticfiles app 설정

116 INSTALLED_APPS = (

117     'django.contrib.auth',

118     'django.contrib.contenttypes',

119     'django.contrib.sessions',

120     'django.contrib.sites',

121     'django.contrib.messages',

122     'django.contrib.staticfiles',


 ( default로 포함되어 있다.)

2. STATIC_ROOT 설정

 STATIC_ROOT = '/Users/taehoonkoo/workspaces/work_django/static/'

static file이 모이게 되는 folder

3. STATIC_URL 설정

 STATIC_URL = '/static/'

{{PROJECT_URL}}/static/로 접근이 가능하게 된다.

4. STATICFILES_DIRS

71 STATICFILES_DIRS = (

 72     # Put strings here, like "/home/html/static" or "C:/www/django/static".

 73     # Always use forward slashes, even on Windows.

 74     # Don't forget to use absolute paths, not relative paths.

 75     ("js","/Users/taehoonkoo/workspaces/work_django/testproject/static/js/"),

 76     ("css","/Users/taehoonkoo/workspaces/work_django/testproject/static/css/"),

 77     ("images","/Users/taehoonkoo/workspaces/work_django/testproject/static/images/"),

 78     ("pages","/Users/taehoonkoo/workspaces/work_django/testproject/static/pages/"),

 79 )


prefix를 사용하면, /static/js, /static/images/ 등으로 사용하면 된다.

설정이 잘못되어도, server에 올라 갈때 error가 감지 되지 않기 때문에, 아래와 같은 명령어로 확인할 수 있다.

$ python manage.py collectstatic --help
$ python manage.py findstatic my.js



원문 : https://docs.djangoproject.com/en/dev/ref/contrib/staticfiles/#std:setting-STATICFILES_DIRS

 

1. Create Project

django-admin.py startproject {myproject}
 

2. Development Server

python manage.py runserver.
 

3. Create Default App.

python manage.py startapp polls
  
 


 
 

ids = [1,2,3,4]
MyObject.objects.filter(id__in=ids)


위와 같이 가능하다.
 

referer = request.META.get('HTTP_REFERER', '') 


이건 DJango 라기 보다, HTTP META 스펙일듯.

{% autoescape off %} 

     {{ blahblah  }}
{% endautoescape %}



이렇게,  autoescape tag로 감싸 주기만 하면 된다.
 

DJango Project를 Apache와 설정하는것으로 해보았습니다.

http://docs.djangoproject.com/en/dev/howto/deployment/modpython/

에 설명 된대로 아래와 같이 설정을 해줘야 하는데요

 1 <Location /django_bookmarks>

  2     SetHandler python-program

  3     PythonHandler django.core.handlers.modpython

  4     SetEnv DJANGO_SETTINGS_MODULE myproject.settings

  5     PythonOption django.root /django_bookmarks

  6     PythonDebug On

  7     PythonPath "['/path/to/project'] + sys.path"

  8 </Location>


   7     PythonPath "['/path/to/project'] + sys.path"

요 파트 때문에 삽질했습니다 ㅎㅎ

Proejct Path가 /work_django/myproject 라면,

이 패스가 아니라, /work_djagon 까지 입니다. 

그래서 Package Import시 myproject.setting 혹은 myproject.urls 같은것을 Symbol로 찾게 되는데요

myproject folder밑에 setting.py를 찾게 되는것이지요 Python 초보라서 이런것들을 잘 모르고 있었나 봅니다 :)


 

+ Recent posts