예를 들어 현재 로그인한 경우 상단 navbar의 UsefulSites에는 Custom 항목이 보입니다.


navbar는 현재 웹사이트의 모든 페이지에 보이기 때문에, 개인이 설정한 즐겨찾기가 항상 로드되어야 합니다.


이럴 경우 모든 view파일에 해당 정보를 제공하는 것은 어렵습니다. 이 때,  다음과 같은 순서로 이 문제를 해결할 수 있습니다.


1. 프로젝트의 settings.py 파일 수정

settings.py 파일에 Templates 설정 항목에서 'context_processors' 항목을 찾습니다.

여기에 (앱이름).context_processors.(정의할함수이름) 을 추가합니다. 다음은 북마크 생성시 사용한 예시입니다.


1
2
3
4
5
6
7
8
9
10
11
TEMPLATES = [
    {
        ...
        'OPTIONS': {
            'context_processors': [
                ...
                'tboard.context_processors.bookmark_context',
            ],
        },
    },
]
cs


2. 프로젝트 앱디렉토리에 context_processors.py 파일을 만들고 코드를 작성합니다.


앱폴더 안에 위파일이 없다면 만들고 다음과 같은 형태로 코드를 작성합니다.

저는 로그인한 경우 로그인한 사람의 bookmark 정보를 bookmarks에 담아 보내는 함수입니다.



1
2
3
4
5
6
7
8
9
from .models import Bookmark
 
def bookmark_context(request):
    context = {}
    if request.user.is_authenticated:
        bookmarks = Bookmark.objects.filter(user=request.user)
        context['bookmarks'= bookmarks
    return context
 
cs

이제 완료되었습니다.

템플릿에서 해당 정보를 사용하면 됩니다.