相关疑难解决方法(0)

在django中创建我自己的上下文处理器

我已经到了一个点,我需要将某些变量传递给我的所有视图(主要是自定义身份验证类型变量).

我被告知写我自己的上下文处理器是最好的方法,但我有一些问题.

我的设置文件如下所示

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.contrib.messages.context_processors.messages",
    "sandbox.context_processors.say_hello", 
)
Run Code Online (Sandbox Code Playgroud)

如您所见,我有一个名为'context_processors'的模块和一个名为'say_hello'的函数.

看起来像

def say_hello(request):
        return {
            'say_hello':"Hello",
        }
Run Code Online (Sandbox Code Playgroud)

我是否正确地假设我现在可以在我的观点中做以下事情?

{{ say_hello }}
Run Code Online (Sandbox Code Playgroud)

现在,这在我的模板中没有任何内容.

我的观点看起来像

from django.shortcuts import render_to_response

def test(request):
        return render_to_response("test.html")
Run Code Online (Sandbox Code Playgroud)

django views django-context

75
推荐指数
4
解决办法
4万
查看次数

如何将变量传递给django中的所有模板?

我试图将变量(浏览器变量)传递给我的应用程序中的所有模板.有关如何使其工作的任何建议?

视图:

def browser(request):
    primary_cat_list = Categories.objects.order_by("category")
    subcat_list = SubCategories.objects.order_by("sub_category")
    product = Productbackup.objects.order_by("website")
    browser =  list(chain(primary_cat_list, subcat_list, product))
    return render_to_response('reserve/templates/base.html', locals(), context_instance=RequestContext(request))
Run Code Online (Sandbox Code Playgroud)

模板:

{% for prod in browser %} {{ prod }}, {% endfor %}
Run Code Online (Sandbox Code Playgroud)

python django templates view base

9
推荐指数
1
解决办法
7765
查看次数

django.core.context_processors.request不工作

我有这个setting.py:

TEMPLATE_CONTEXT_PROCESSORS = (
    'django.core.context_processors.request',
    'django.core.context_processors.static',
    'django.contrib.auth.context_processors.auth',
)
Run Code Online (Sandbox Code Playgroud)

每当我尝试在模板中访问请求时(例如{{ request.user.get_profile.custom_username }}),我都没有结果.我认为请求没有添加到模板中,因为如果我强制请求进入Context(在视图中),我可以访问它:

ctx = {}
#ctx['request'] = request
return render_to_response('index.html', ctx)
Run Code Online (Sandbox Code Playgroud)

有帮助吗?谢谢

django django-templates

1
推荐指数
1
解决办法
895
查看次数