Django, template context processors

前端 未结 3 693
广开言路
广开言路 2020-11-29 00:52

I have a weird problem, I want to add a global query using context processors. This is how I did it by following:

made a processor.py in my app as such:

<         


        
相关标签:
3条回答
  • 2020-11-29 01:06

    You need to add the default values of TEMPLATE_CONTEXT_PROCESSORS. However, instead of hard-coding those values, which will be tied to a specific version of Django, you can append your context processor to the default values by the following:

    from django.conf import global_settings
    TEMPLATE_CONTEXT_PROCESSORS = global_settings.TEMPLATE_CONTEXT_PROCESSORS + (
        "myapp.processor.foos",
    )
    

    Make sure to include the trailing comma in the tuple, so that Python recognizes it as a tuple.

    0 讨论(0)
  • 2020-11-29 01:28

    When you specify this:

    TEMPLATE_CONTEXT_PROCESSORS = ('myapp.processor.foos',)
    

    In your settings file, you are overriding the Django's default context processors. In order to extend the list, you need to include the default ones in your settings:

    TEMPLATE_CONTEXT_PROCESSORS = (
        "django.core.context_processors.auth",
        "django.core.context_processors.debug",
        "django.core.context_processors.i18n",
        "django.core.context_processors.media",
        "myapp.processor.foos",
    )
    

    Note, the settings above are the defaults (plus your processor) for django 1.1.

    0 讨论(0)
  • 2020-11-29 01:29

    Here what worked for me for Django 1.3

    TEMPLATE_CONTEXT_PROCESSORS = (
        "django.contrib.auth.context_processors.auth",
        "django.core.context_processors.debug",
        "django.core.context_processors.i18n",
        "django.core.context_processors.media",
        "django.core.context_processors.static",
        "django.contrib.messages.context_processors.messages",
        "myapp.processor.foos", )
    
    0 讨论(0)
提交回复
热议问题