python的Web框架,Django模板变量,过滤器和静态文件引入

<h3 id="html模板的路径查找" data-source-line="2">HTML模板的路径查找
<p data-source-line="4">在setting中设置查找路径:


<div class="cnblogs_code">

 
 
  BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath()))
TEMPLATES = : :[os.path.join(BASE_DIR, ]

<p data-source-line="35">如果APP_DIRS为True,则会在'DIRS'找完之后,在'INSALLSE_APPS'的列表目录下寻找


<div class="cnblogs_code">

 INSTALLED_APPS =     
     
          
                               ]

<p data-source-line="50">只要找到了符合的模板就返回,不再向下继续找了,所以优先级和路径很重要

<h3 data-source-line="56"> 
<h3 id="静态页面动态页面" data-source-line="56">静态页面,动态页面
<p data-source-line="57">静态页面是没有改变,获取到网页后,是固定样式的; 动态页面是和服务器有交互的页面,在与服务器交互后,返回的页面会有不同的页面返回给浏览器


<h6 id="context-模板变量" data-source-line="61">context 模板变量
<p data-source-line="62">view中传递数据给html页面,命名规则不能以下划线开头,其他同python,变量的值可以是任何数据类型


<div class="cnblogs_code">

 context={例:
 </span><span style="color: #008000;"&gt;#</span><span style="color: #008000;"&gt;view文件内配置传送:</span>
 <span style="color: #0000ff;"&gt;def</span><span style="color: #000000;"&gt; index(request):
     now </span>=<span style="color: #000000;"&gt; datetime.now()
     </span><span style="color: #0000ff;"&gt;return</span> render(request,<span style="color: #800000;"&gt;'</span><span style="color: #800000;"&gt;index.html</span><span style="color: #800000;"&gt;'</span>,context=<span style="color: #000000;"&gt;{
            </span><span style="color: #800000;"&gt;'</span><span style="color: #800000;"&gt;nows</span><span style="color: #800000;"&gt;'</span><span style="color: #000000;"&gt;:now
            </span><span style="color: #008000;"&gt;#</span><span style="color: #008000;"&gt;此处对应的字典传送给index.html</span>

<span style="color: #000000;"> })

</span><span style="color: #008000;"&gt;#</span><span style="color: #008000;"&gt; index模板文件内配置接受:</span>
 <body>
    <h2>当前时间为:{{nows}}</h2>
    <span style="color: #008000;"&gt;#</span><span style="color: #008000;"&gt;此处的nows是对应的view文件中的key</span>
 </body></pre>

<p data-source-line="82">时间格式设置,设置的时间格式并不是我们想要的时区时间,就需要修改时间的参数。


<pre data-source-line="83"><code class="hljs"> setting<span class="zh-hans">中设置:
<div class="cnblogs_code">

 TIME_ZONE = 

<p data-source-line="88">模板变量各种方法:


<p data-source-line="91">html接受的语法及输出的结果:下列的列表、字典、函数等需要再views文件中配置才可以接受


<div class="cnblogs_code">

 
     列表:lt = [1,2,3         

我是一个列表:{{lt}}

输出:[1,3

我是列表中的第二个值:{{lt.2}}

输出:2

我是一个函数:{{func}}

字典:dt = {:,:18,:

我是一个字典:{{dt}}

输出:{:,:18

我是字典的一个值:{{dt.name}}

调用字典的一个方法{{dt.items}}

输出:abc; 如果字典中没有 1 1 2 -1 -2 -3 3 **渲染失败返回空**

<h4 id="模板过滤器" data-source-line="132">模板过滤器
<p data-source-line="135">传递的参数例子,为一下内容提供参数例子


<div class="cnblogs_code">

 now = 
 lt = [1,3 
 dt = {:,:,: 
       

<h5 id="日期时间的格式化datetime" data-source-line="146">日期,时间的格式化date,time
<pre data-source-line="147"><code class="hljs"><span class="xml"><span class="zh-hans">以上列代码传送的参数 <span class="zh-hans">时间now<span class="zh-hans">为例:
<div class="cnblogs_code">

  
         

当前日期时间{{now|date:}}

当前时间{{now|time:}}


   当前时间11时53分11秒

<p data-source-line="158">date和time过滤器格式


<div class="cnblogs_code">

Y:四位数的年。如:19999901,091,9,1201, 09, 311, 9, 121, 9 ,128 ,2301, 09, 1201, 13, 24-59-59

<h5 id="add将参数与值相加首先尝试转换成整数相加如果失败则尝试其他多有可能valueaddvalue" data-source-line="174">add:将参数与值相加,首先尝试转换成整数相加,如果失败,则尝试其他多有可能,{{value|add:'value'}}
<div class="cnblogs_code">

     

1列表值的相加:{{ lt.1|add: }}

2列表值的相加:{{ lt.1|add: }}

2列表值的相加:{{ lt.1|add:3.5 }}

函数的值为{{ func|add: }}

<p data-source-line="183">输出结果


<div class="cnblogs_code">

     1列表值的相加:5
     
      2列表值的相加:5
     
     
     3函数的值为:我是一个函数haha

<h5 id="capfirst首字母大写" data-source-line="194">capfirst:首字母大写
<div class="cnblogs_code">

     

首字母的大小写方法:{{ dt.items|capfirst }}

<p data-source-line="198">输出结果


<div class="cnblogs_code">

     首字母的大小写方法:ABc

<h5 id="default如果变量解析失败则返回给定的默认值当value是空字符串也会输出默认值" data-source-line="203">default:如果变量解析失败,则返回给定的默认值,当value是''空字符串,也会输出默认值。
<div class="cnblogs_code">

        
       
       
 
 解析失败则返回默认值:{{ func|default:"nothing" }}

输出结果

解析失败则返回默认值:nothing

<h5 id="firstlast第一个元素和最后一个元素" data-source-line="208">first,last:第一个元素和最后一个元素
<div class="cnblogs_code">

     

列表的第一个元素:{{ lt|first }}

列表的最后一个元素:{{lt|last}}

<p data-source-line="213">输出结果


<div class="cnblogs_code">

     列表的第一个元素:1
     列表的最后一个元素:3

<h5 id="slice切片" data-source-line="219">slice:切片
<div class="cnblogs_code">

     

我是列表的倒序:{{ lt|slice:}}

<p data-source-line="223">输出结果:


<div class="cnblogs_code">

     我是列表的倒序:[3,1]

<h5 id="join连接字符串列表与strjoinlist一样" data-source-line="228">join:连接字符串列表,与str.join(list)一样
<div class="cnblogs_code">

     

把字典的value连接起来:{{ dt.name|join:}}

<p data-source-line="232">输出结果


<div class="cnblogs_code">

     把字典的value连接起来:张xxx三

<h5 id="floatformat浮点数格式化不指定小数位参数默认保留一位" data-source-line="237">floatformat:浮点数格式化,不指定小数位参数,默认保留一位
<div class="cnblogs_code">

34.23234         {{ value|floatformat}}             34.2
    34.23234         {{ value|floatformat:3}}           34.232

<h5 id="lengthlength_is返回字符串或列表的长度" data-source-line="244">length,length_is:返回字符串或列表的长度
<div class="cnblogs_code">

     

列表的长度是:{{ lt|length}}

列表的长度是{{ le|length }}?:{{ lt|length_is:3 }}

<p data-source-line="249">输出结果


<div class="cnblogs_code">

     列表的长度是:3
     列表的长度是3吗?:True

<h5 id="lower-upper-字符串中的字符都变小写和大写" data-source-line="255">lower,upper :字符串中的字符都变小写和大写
<div class="cnblogs_code">

     

字符都变小写:{{ dt.items|lower }}

字符都变大写:{{ dt.items|upper }}

<p data-source-line="260">输出结果


<div class="cnblogs_code">

      字符都变大写:ABC

<h5 id="title标题化首字母大写" data-source-line="266">title:标题化,首字母大写
<div class="cnblogs_code">

     

title标题化:{{ dt.text|title }}

<p data-source-line="270">输出结果:


<div class="cnblogs_code">

     title标题化:I Am Hua

<p data-source-line="275">过滤器可以用链式的方式:


<div class="cnblogs_code">

|default:|add:}}

<h5 id="safe关闭变量的自动转义使html标签生效xss跨域脚本攻击" data-source-line="281">safe:关闭变量的自动转义,使html标签生效,xss跨域脚本攻击
<p data-source-line="282">反射型和存储型,因为浏览器会解析css和js,所以django帮我们管理这方面的问题。


<div class="cnblogs_code">

    js = alert("1")= 我是安全的,需要渲染成html
<p>{{ html|safe }}</p><span style="color: #000000;"&gt;

添加了safe后,才会执行这段代码,而不是转义成文本格式。</span></pre>

<h3 id="静态文件" data-source-line="296">静态文件
<p data-source-line="298">settings文件中设置静态文件路径的配置


<pre data-source-line="299"><code class="hljs"> <span class="zh-hans">默认是<span class="hljs-keyword">static<span class="zh-hans">,但也可以更改为其他

<div class="cnblogs_code">

     STATIC_URL = 

STATICFILES_DIRS = [os.path.join(BASE_DIR,)]

<p data-source-line="307">静态文件的引入


<p data-source-line="309">-硬编码


<pre data-source-line="310"><code class="hljs"> <span class="zh-hans">在css<span class="zh-hans">文件夹下创建了同名的css<span class="zh-hans">文件。然后在html<span class="zh-hans">中的head<span class="zh-hans">内引入文件
<div class="cnblogs_code">

href=>

<p data-source-line="318">-模板标签,动态解析


<div class="cnblogs_code">

{% load static % href=>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


注:所有源代码均实测运行过。所有源代码均已上传CSDN,请有需要的朋友自行下载。
继承APIView和ViewSetMixin;作用也与APIView基本类似,提供了身份认证、权限校验、流量管理等。ViewSet在开发接口中不经常用。
一、Django介绍Python下有许多款不同的 Web 框架。Django是重量级选手中最有代表性的一位。许多成功的网站和APP都基于Django。Django 是一个开放源代码的 Web 应用框架,由 Python 写成。Django 遵守 BSD 版权,初次发布于 2005 年 7 月, 并于 2008 年 9 月发布了第一个正式版本 1.0 。Django学习线路Django 采用了 MVT 的软件设计模式,即模型(Model),视图(View)和模板(Template)。这个MVT模式并
本文从nginx快速掌握到使用,gunicorn快速掌握到使用,实现小白快速搭建django项目,并对可能出现的报错进行了分析
uniapp微信小程序订阅消息发送服务通知
Django终端打印SQL语句 1 Setting配置: 2 默认python 使用的MysqlDB连接,Python3 支持支持pymysql 所有需要在app里面的__init__加上下面配置:
url: re_path(&#39;authors/$&#39;, views.AuthorView.as_view()), re_path(&#39;book/(?P\d+)/$&#39;, vie
前提 关于html寻找路线: template 如果在各个APP中存在, Django 会优先找全局template 文件下的html文件,如果全局下的template文件没有相关的html Djan
// GET请求request.GET // POST请求request.POST // 处理文件上传请求request.FILES // 处理如checkbox等多选 接受列表request.get
from bs4 import BeautifulSoup#kindeditordef kindeditor(request): s = &#39;&#39;&#39; &lt;li&gt;&lt;s
view.py 配置 html 配置
from django.http import JsonResponse JsonResponse 里面代码会加这一个响应头 kwargs.setdefault(&#39;content_type&#
#下面两种是基于QuerySet查询 也就是说SQL中用的jion连表的方式查询books = models.UserInfo.objects.all() print(type(books)) &gt
return HttpResponse(&quot;OK&quot;) 返回一个字符串 return redirect(&quot;/index/&quot;) 返回URL return render
from django.http import JsonResponse JsonResponse 里面代码会加这一个响应头 kwargs.setdefault(&#39;content_type&#
浏览器有一个很重要的概念——同源策略(Same-Origin Policy)。所谓同源是指,域名,协议,端口相同。不同源的客户端脚本(javascript、ActionScript)在没明确授权的情况
自动发送 &gt; 依赖jQuery文件 实例--&gt;GET请求: 手动发送 &gt; 依赖浏览器XML对象(也叫原生ajax) Ajax主要就是使用 【XmlHttpRequest】对象来完成请
#下面两种是基于QuerySet查询 也就是说SQL中用的jion连表的方式查询books = models.UserInfo.objects.all() print(type(books)) &gt
// GET请求request.GET // POST请求request.POST // 处理文件上传请求request.FILES // 处理如checkbox等多选 接受列表request.get
return HttpResponse(&quot;OK&quot;) 返回一个字符串 return redirect(&quot;/index/&quot;) 返回URL return render