私はdjangoプロジェクトにテンプレートタグを実装しようとしています。私はキーエラーです。私は、load_menu.pyのテンプレートタグにコンテキストを取得することと関係があると考えています。KeyError例外型Djangoテンプレートタグ
Exception Type: KeyError
Exception Value:'request'
Error during template rendering
In template C:\Users\Eric Franzen\PycharmProjects\MySite\templates\app\TikSys\tiksys_home.html, error at line 0
request
1 {% extends 'app/TikSys/tiksysbase.html' %}
2 {% block content %}
3 <div class="body-container">
4 {% include "app/TikSys/sidenavbar.html" %}
5 <div class="col-md-10 ">
6 <div class="jumbotron">
7 <h1>Welcome to TikSys!</h1>
8 <p>Please Sign In</p>
9 </div>
10 </div>
トレースバック
...
File "C:\Users\Eric Franzen\PycharmProjects\MySite\Site\views.py", line 43, in tiksys_home
return render(request, 'app/TikSys/tiksys_home.html', {})
...
File "C:\Users\Eric Franzen\PycharmProjects\MySite\Site\templatetags\load_menu.py", line 10, in menu
request = context['request']
サイト/ templatetags/load_menu.py
from django import template
from Site.models import *
register = template.Library()
@register.inclusion_tag('app/TikSys/sidenavbar.html', takes_context=True)
def menu(context):
request = context['request']
um = UserMunicipal.objects.filter(userID=request.user).values('municipalID')
m = Municipal.objects.filter(id=um)
return {'menus': m}
アプリ/ TikSys/sidenavbar.html
<div class="col-md-2 NavBar">
{% load load_menu %}
{% menu %}
{% for item in menus %}
<ul class="nav nav-pills nav-stacked">
<li>{{ item.name }} </li>
</ul>
{% endfor %}
</div>
views.py
from django.shortcuts import render
# Create your views here.
from django.http import HttpResponse
from django.template import Context, loader
from django.views.generic import TemplateView
from Site.forms import UserForm, UserProfileForm
from django.http import *
from django.shortcuts import render_to_response, redirect
from django.template import RequestContext
from django.contrib.auth.decorators import login_required
from django.contrib.auth import authenticate, login, logout
from django.contrib.auth import get_user_model
from .models import Notification, UserMunicipal, Municipal
@login_required(login_url='/login/')
def tiksys_home(request):
return render(request, 'app/TikSys/tiksys_home.html', {})
コンテキストには「要求」がありません。コンテキストプロセッサの設定に 'django.template.context_processors.request'を追加する必要があるかもしれません。 – solarissmoke
@solarissmoke私のsetting.pyにはこれが既に含まれています、 ''OPTIONS ':[' context_processors ':[ ' django.template.context_processors.request '、' – enrique2334
@solarissmokeちょうどそれを追加しました – enrique2334