views.py 에서 세션을 참조하려면, 아래와 같이 사용하지만, Template 에서는 같은 문법을 사용할 수 없다.

request.session['세션이름'] = '값'

Template에서 Session을 이용하는 방법을 알아보자. settings.py 에 다음을 추가한다.

TEMPLATE_CONTEXT_PROCESSORS = (     'django.core.context_processors.request', )


views.py 에서는 render 함수를 이용해서 리턴한다.

return render(request, 'session_test.html')


Template에서는 아래와 같이 사용한다.

{{ request.session.세션이름 }}

 

Django 1.4 에서 가장 큰 변화라면, 전체 어플리케이션의 레이아웃이 바뀌었다는 점이다.

이전 버전에서는 프로젝트를 생성하면 아래와 같이 파일들이 생성되었다.

project_name/
            `- __init__.py
            `- manage.py
            `- settings.py
            `- urls.py
            `- wsgi.py

1.4에서는 이렇게 바뀌었다.

project_name/
            `- manage.py
            `- project_name/
                           `- __init__.py
                           `- settings.py
                           `- urls.py
                           `- wsgi.py

여기에서 주의 깊게 볼 것은 상위에 있는 project_name 디렉토리에는 __init__.py 파일이 없기 때문에 패키지명으로 사용할 수 없다는 것과 settings.py 에서 템플릿 디렉토리를 지정할 때 주의해야 한다는 것이다. 템플릿 디렉토리를 절대경로로 하는 경우에는 상관 없지만, 보통(?) settings.py 를 기준으로 상대경로를 지정하는 경우가 많이 있다.

1.4 이전에는 다음과 같이 하면 문제 없었다.

import os.path
TEMPLATE_DIRS = (
    os.path.join(os.path.dirname(__file__), 'templates'),
)

그러나, 1.4 에서는 settings.py 의 위치가 한단계 밑으로 내려갔기 때문에, 좀 더 복잡해지긴 했지만, 아래와 같은 방법으로 설정해주어야 한다.

import os

SETTINGS_DIR = os.path.abspath(os.path.dirname(__file__))
(SITE_ROOT, dummy) = os.path.split(SETTINGS_DIR)


TEMPLATE_DIRS = (
    os.path.join(SITE_ROOT, 'templates'),
)



+ Recent posts