DTL语言,即django template language

第一次使用时,需要修改项目的setting.py文件,将其中TEMPLATES中的DIRS修改为os.path.join(BASE_DIR, 'templates'),BASE_DIR在setting.py文件中定义为BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))),表示项目所在的文件夹

使用render时,系统会默认从setting.py文件的TEMPLATES中的DIRS所指的路径寻找渲染文件

如果DIRS为空,而APP_DIRS为True,系统则会从项目的各个app的templates目录下去寻找渲染文件,前提是app已经添加到setting.py文件的INSTALLED_APPS中。

templates的查找顺序:DIRS、APP_DIRS

#项目的setting.py中templates的最初配置
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'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',
],
},
},
] #INSTALLED_APPS的最初配置
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]

template_intro_demo

渲染模板的两种方式

1.需要导入from django.template.loader import render_to_string,最后HttpResponse返回一个render_to_string的值

例如html=render_to_string('index.html')  return HttpResponse(html)

2.直接通过render返回,render返回的第一个参数为request,第二个为要渲染的文件名称,一般使用这种方式

return render(request,'index.html')

在模板中使用变量,有两种方法,但在html模板中必须将变量放在{{ 变量 }}中

①将变量存放在字典中,在render中通过context=字典的形式接收变量,然后在模板中直接通过字典的键值引用

#视图函数
from django.shortcuts import render
def index(request):
con={'username':'ahahhah','age':25,'hobby':'basketball'} #定义变量,变量只能为字典形式
return render(request,'index.html',context=con) #render只能通过context接收变量 #渲染文件
……
<body>
{{ username }} #直接使用字典的键获取键值,不需要使用context.键否则无法获取到值
{{ age }}
{{ hobby }}
</body>
……

②变量以任何形式存在,在render中通过{'接收变量的名称':'变量名称'}的形式接收变量,然后在模板中通过接收变量的名称(如果为列表、元组、字典、对象等,需通过下标访问)引用

#视图函数
from django.shortcuts import render
def index(request):
con=['ahahhah',25,'basketball'] #定义变量,可以是数字、字符串、列表、元组、字典、对象等
return render(request,'index.html',{'person':con}) #render通过字典形式接收变量 #渲染文件
……
<body>
{{ person.0 }} #以render中的字典的键来表示变量,并通过索引下标访问值
{{ person.1 }}
{{ person.2 }}
</body>
……

1.在模板中使用视图函数中的变量,需要将变量放置到{{变量名}}中

2.如果在render中通过字典的形式接收变量并且变量为列表、元组、字典、对象等,那么想要访问变量的值,需要通过变量.属性来访问,不能通过python下标的方式访问,如访问列表的第3个元素l.2

3.获取字典所有的key可使用d.keys,但是如果字典中有一个key的名称也为keys,那么d.keys就会获取到keys对应的键值,因此不建议在字典中定义key为字典的属性,例如keys、items、values

django变量使用-在模板中使用视图函数中的变量的更多相关文章

  1. django系列8.5--使用装饰器(视图函数中)实现用户登录状态检验

    views.py def session_auth(fn): def inner(request,*args,**kwargs): status = request.session.get('sess ...

  2. django之子应用中开发视图函数

    一:修改视图函数 报错:ImportError: No module named 'django' 原因是:pycharm中的解释器未选择虚拟环境里面的python3 from django.shor ...

  3. django目录下的路由系统和视图函数

    一.Django路由系统(url) 1.什么是路由系统 路由系统的本质是URL模式以及要为该URL模式调用的视图函数之间的一个映射表即不同的url路径对应的不同的函数,该路由系统是存放在全局配置文件u ...

  4. flask 在视图函数中验证表单

    在视图函数中验证表单 因为现在的basic_form视图同时接受两种类型的请求:GET请求和POST请求.所以我们要根据请求方法的不同执行不同的代码.具体来说,首先是实例化表单,如果是GET请求,就渲 ...

  5. Flask从入门到精通之在视图函数中处理表单

    在新版hello.py 中,视图函数index() 不仅要渲染表单,还要接收表单中的数据.更新后的index() 视图函数如下: @app.route('/') def index(): name = ...

  6. R语言:利用caret包中的dummyVars函数进行虚拟变量处理

    dummyVars函数:dummyVars creates a full set of dummy variables (i.e. less than full rank parameterizati ...

  7. 下拉框select->option中如何把参数传到视图函数中去

    例子: <select name="p_id" id=""> {% for p in permissions %} <option value ...

  8. JavaScript 中的匿名函数((function() {})();)与变量的作用域

    以前都是直接用前端框架Bootstrap,突然想看看Javascript,发现javascript是个非常有趣的东西,这里把刚碰到的一个小问题的理解做下笔录(废话不多说,上代码). /** * Exa ...

  9. iOS 中的视图函数 init initwithnib viewDidLoad viewWillAppear的总结

    我要总结的函数主要是这几个: UIView *view-如果view还没有被初始化的话,getter方法会先调用[self loadView],如果getter或者setter方法被重写了,子类中的g ...

随机推荐

  1. 【MySQL】-NO.21.MySQL.1.MySQL.1.001-【Install MySQL5.7 On Windows】

    1.0.0 Summary Tittle:[MySQL]-NO.21.MySQL.1.MySQL.1.001-[Install MySQL5.7 On Windows] Style:Web Serie ...

  2. 【LeetCode每天一题】Next Permutation(下一个排列)

    Implement next permutation, which rearranges numbers into the lexicographically next greater permuta ...

  3. js 的date的format时间,获取当前时间,前一天的日期

    Date.prototype.Format = function (fmt) { //author: meizz var o = { "M+": this.getMonth() + ...

  4. Node.js进击基础一(5-11事件模块)

    res.on res有on方法. 在nodejs中不存在浏览器里的冒泡捕获等行为,集成了一个模块events,对外暴露一个对象EventEmitter ,EventEmitter作用只有2个事件的发射 ...

  5. .Net拾忆:HttpWebRequest/WebClient两种方式模拟Post

    一.代码 1.HttpWebRequest public static string DoPost( string target, string content ) { try { string pa ...

  6. 6.C# 释放非托管资源2

    C# 释放非托管资源 C#中资源分为托管资源和非托管资源. 托管资源由垃圾回收器控制如何释放,不需要程序员过多的考虑(当然也程序员也可以自己释放). 非托管资源需要自己编写代码来释放.那么编写好的释放 ...

  7. iOS UI基础 - 20 UITextField

    //找到已经创建好的UITextField UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(, , RFS ...

  8. 原生table相关写法

    1.<table style="width: 100%;text-align: center" cellpadding="0" cellspacing=& ...

  9. mysql group_concat用法

    MySQL中group_concat函数 完整的语法如下: group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔 ...

  10. Nginx配置文件具体配置解释

    Nginx配置文件具体配置解释   #定义Nginx运行的用户和用户组 user www www; #nginx进程数,建议设置为等于CPU总核心数. worker_processes 8; #全局错 ...