Python中的全局上下文的含义,个人感觉相当于Java中的servletContext;
相关代码如下
新增一个应用包
python manage.py startapp ctx
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^staticread/', include('staticread.urls')),
url(r'^principle/', include('principle.urls')),
url(r'^stu/', include('stu.urls')),
url(r'^ctx/', include('ctx.urls'))
] urlpatterns = [
url(r'^getdata/$', views.getdata_view),
]# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.http import HttpResponse
from django.shortcuts import render
from ctx.my_context_xxx import get_menus
# Create your views here.
def getdata_view(request):
# return render(request,'head.html')
from django.template import Template, RequestContext
t = Template('hello:{{menus}}')
render_string = t.render(RequestContext(request, dict_=None, processors=(get_menus,)))
return HttpResponse(render_string)注意:这里渲染模板页面的时候并没有传递参数值到前台;
应用包下创建my_context_xxx.py文件
# coding=utf-8
# 模拟后台数据查询,网站导航栏一般每个页面都有使用,应该设置为全局上下文
def get_menus(request):
menus = [{'id': '1', 'name': '新闻'}, {'id': '2', 'name': 'hao123'}, {'id': '3', 'name': '地图'}, {'id': '4', 'name': '视频'},
{'id': '5', 'name': '贴吧'},{'id': '6', 'name': '晓码阁'}]
return {'menus': menus}
settings中配置当前函数路径
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, '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',
'ctx.my_context_xxx.get_menus'
],
},
},
]
前端代码如下

测试结果如下

over......
备案号:湘ICP备19000029号
Copyright © 2018-2019 javaxl晓码阁 版权所有