15. 미들웨어 처리 과정 - eungyukm/DjangoBase GitHub Wiki

미들웨어 처리 과정

  1. main_app에 views.py를 아래와 같이 수정합니다.
from django.shortcuts import render
from django.http import HttpResponse
from django.template import loader
import board_app.models

# Create your views here.
def index(request):
    # board_info_table에 기본 데이터 저장
    # 한번 수행 후 주석처리 해주세요~
    # model1 = board_app.models.BoardInfoTable()
    # model1.board_info_name = "자유게시판"
    # model1.save()

    # model2 = board_app.models.BoardInfoTable()
    # model2.board_info_name = "유머게시판"
    # model2.save()

    # model3 = board_app.models.BoardInfoTable()
    # model3.board_info_name = "정치게시판"
    # model3.save()

    # model4 = board_app.models.BoardInfoTable()
    # model4.board_info_name = "스포츠게시판"
    # model4.save()

    render_data = {

    }

    template = loader.get_template('index.html')
    return HttpResponse(template.render(render_data, request))
  1. 미들웨어 처리 절차
  • 미들웨어를 아래와 같이 등록합니다.
MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'mini_project.middleware.TopMenuMiddleWare.TopMenuMiddleware'
]
  • TopMenuMiddleware로 데이터 requset에 저장
  • main_app에 views.py에서 처리
  • top_menu.html에서 아래와 같이 처리
		<ul class="navbar-nav">
			{% for menu in request.menu_list %}
			<li class="nav-item">
				<a href="/board/board_main?board_info_idx={{menu.board_info_idx}}" class="nav-link">{{menu.board_info_name}}</a>
			</li>
			{% endfor %}
		</ul>
  1. settings.py를 아래와 같이 수정합니다.
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'mini_project', 'templates')],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]
⚠️ **GitHub.com Fallback** ⚠️