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晓码阁 版权所有