2017-05-24 4 views
1

Ich habe ein Django Kontext Prozessor gemacht, die nicht funktioniert ... und es zeigt auch messages.First Warnung erhalten Sie die Warnmeldung: -Django Context-Prozessoren funktionieren nicht?

WARNHINWEISE: (1_8.W001) Die Standalone TEMPLATE_ * -Einstellungen wurden in Django 1.8 veraltet und das TEMPLATES-Wörterbuch benötigt die Priorität . Sie müssen die Werte der folgenden Einstellungen in Ihre Standardvorlage TEMPLATE dict: TEMPLATE_CONTEXT_PROCESSORS setzen.

Jetzt

, ich habe Prozessor erstellt mym custum Kontext auf diese Weise

in settings.py:-

TEMPLATE_CONTEXT_PROCESSORS = (
    "django.core.context_processors.auth", 
    "django.core.context_processors.debug", 
    "django.core.context_processors.i18n", 
    "django.core.context_processors.media", 
    "cms.utils.context_processors.permission_based_hidding_of_sidebar" 
) 

und erstellt meine fuction in utills, die custum Kontext-Prozessoren: -

from django.shortcuts import render, redirect, get_object_or_404 
from django.contrib.auth.decorators import login_required 
from django.views.decorators.csrf import csrf_exempt 
from cms.models.cmsUser import CmsUser 
from cms.models.masterUsersPermissionTabMappings import MasterUsersPermissionTabMappings 

@login_required 
@csrf_exempt 
def permission_based_hidding_of_sidebar(request): 
    cms_user = CmsUser.objects.get(userId=request.user.id) 
    print cms_user.id 
    universityPermission = MasterUsersPermissionTabMappings.objects.filter(userId=cms_user).get(permissionTypeId=1) 
    cmsUserPermission = MasterUsersPermissionTabMappings.objects.filter(userId=cms_user).get(permissionTypeId=2) 
    promotedPermission = MasterUsersPermissionTabMappings.objects.filter(userId=cms_user).get(permissionTypeId=3) 
    appUserPermission = MasterUsersPermissionTabMappings.objects.filter(userId=cms_user).get(permissionTypeId=4) 
    newsPermission = MasterUsersPermissionTabMappings.objects.filter(userId=cms_user).get(permissionTypeId=5) 
    emailPermission = MasterUsersPermissionTabMappings.objects.filter(userId=cms_user).get(permissionTypeId=6) 
    pushPermission = MasterUsersPermissionTabMappings.objects.filter(userId=cms_user).get(permissionTypeId=7) 
    chatPermission = MasterUsersPermissionTabMappings.objects.filter(userId=cms_user).get(permissionTypeId=8) 
    frontendPermission = MasterUsersPermissionTabMappings.objects.filter(userId=cms_user).get(permissionTypeId=9) 
    print universityPermission 
    a='hello' 

    return render(request,'templates/admin_user_management/admin_user_add.html',{ 
     'universityPermission':universityPermission,'cmsUserPermission':cmsUserPermission, 
     'promotedPermission':promotedPermission,'appUserPermission':appUserPermission, 
     'newsPermission':newsPermission,'emailPermission':emailPermission,'pushPermission':pushPermission, 
     'chatPermission':chatPermission,'frontendPermission':frontendPermission,'sayHello':a 
    }) 

und ich versuche, es mit dieser auf meine Ansichten zu sehen: -

return render(request,template-name,{},context_instance=RequestContext(request)) 

es zeigt mir den Fehler context_instance ist nicht in Ansichten zu definieren.Ist gibt es eine Möglichkeit, ich kann es in Ansichten verwenden.

Antwort

2

Ihre permission_based_hidding_of_sidebar Methode sieht aus wie eine Ansicht, kein Kontextprozessor. Ein Vorlagenkontextprozessor sollte ein Wörterbuch und keine HTTP-Antwort von render() zurückgeben. Es ist nicht sinnvoll, login_required oder csrf_exempt Dekoratoren zu verwenden.

In Ihrer Ansicht benötigen Sie nicht context_instance=RequestContext(request), die render Verknüpfung wird automatisch eine Anfrage verwenden, um die Vorlage zu rendern.

Schließlich können Sie die 1_8.W001 Warnung beheben, indem Sie Ihre Einstellungen to use TEMPLATES aktualisieren. Sie sollten dann die context_processors in OPTIONS anstelle von TEMPLATE_CONTEXT_PROCESSORS aktualisieren.

+0

hat es funktioniert ......... danke –

Verwandte Themen