当前位置: 首页 > wzjs >正文

如何创建私人网站怎么把广告发到各大平台

如何创建私人网站,怎么把广告发到各大平台,西安市商标局,国内html网站欣赏使用app01子应用举例说明模板的使用。templates官方文档。 templates完整流程认知 第一步,在settings.py中注册app01子应用。 第二步,在app01目录下,新建templates和static目录,用于存放模板文件和资源文件。目录结构如下&#…

使用app01子应用举例说明模板的使用。templates官方文档。

templates完整流程认知

第一步,在settings.py中注册app01子应用。

第二步,在app01目录下,新建templates和static目录,用于存放模板文件和资源文件。目录结构如下:

# user_list.html文件内容
<!DOCTYPE html>
{% load static %}<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><link rel="stylesheet" href="{% static 'plugins' %}">
</head>
<body><p>姓名是{{name}}, 性别是{{sex}}</p><p>身高是{{height}}, 体重是{{weight}}</p><h1>DTL模板引擎</h1><img src="/static/img/1.jpg" alt="">
</body>
</html>
第三步,在 app01/views.py中编写代码。注意render里的context字段值,和html文件中的变量名是对应关系。
# app01/views.pyfrom django.shortcuts import render  # 返回htmldef user_list(request):# 按settings.py中app的注册顺序依次寻找templates目录# data = {"name": "testyan", "sex": "M"}height = 190weight = 200# return render(request, template_name='user_list.html', context=data)# locals()用于获取本地变量return render(request, template_name='user_list.html', context=locals())#  app01/urls.py
from django.urls import pathfrom . import viewsurlpatterns = [path('index/', views.index),path('user/list', views.user_list)
]
第四步,通过浏览器访问。

第二步中templates目录也可以建在根目录下,但要在settings.py中注册模板路径:

同样,static目录也可以建在根目录下,但要在settings.py中注册static资源路径:

django中的static下的静态资源,可以直接通过http://127.0.0.1:1992/static/xxxx拼接地址访问。但项目上线以后,关闭debug模式时,django默认是不提供静态文件的访问支持,项目部署的时候,我们会通过收集静态文件使用nginx这种web服务器来提供静态文件的访问支持。

代码缓存优化 

上述的代码,我们可以进行缓存优化,即是将访问过的html保存到cache中,下次访问就不需要重新render渲染,而是直接从cache中读取。先在app01目录下新建.cache目录。

app01/views.py文件代码:

def user_list(request):height = 190weight = 200# return render(request, template_name='user_list.html', context=locals())if os.path.exists(BASE_DIR/'app01/.cache'/'user_list.html'):print('走缓存文件')with open(BASE_DIR / 'app01/.cache' / 'user_list.html', 'r') as f:content = f.read()else:print('没走缓存文件')# content = render_to_string('user_list.html', context=locals())# 以下两行代码等同于上一行代码template = get_template('user_list.html')content = template.render(locals(), request)with open(BASE_DIR/'app01/.cache'/'user_list.html', 'w') as f:f.write(content)return HttpResponse(content)

通过浏览器访问http://127.0.0.1:1992/app01/user/list时,只有第一次访问会打印“没走缓存文件”,后续访问都打印“走缓存文件”。

模板引擎语法

上述其实已经用到了变量的基础语法,格式为:{{变量}}

变量

在app01/urls.py中绑定路由不再截图示例。后续都不再强调这些步骤,默认实现。

以下是对列表、元组、集合、字典、对象等在模板引擎中的使用方式。

# app01/views.py
def index2(request):list_var = ['v', 'vv', 'vvv']tuple_var = ('ty', 100)set_var = {'small', 'big'}dict_var = {'ishappy': 'yes'}obj_var = osreturn render(request, template_name='user_list.html', context=locals())
<!DOCTYPE html>
{% load static %}<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><link rel="stylesheet" href="{% static 'plugins' %}">
</head>
<body>
<!--    <p>姓名是{{name}}, 性别是{{sex}}</p>-->
<!--    <p>身高是{{height}}, 体重是{{weight}}</p>--><h1>DTL模板引擎</h1>
<!--    <img src="/static/img/1.jpg" alt="">-->
<!--    <h1>html默认注释</h1>-->{# DTL单行注释 #}{% comment %}多行注释多行注释{% endcomment %}{# DTL中列表和元组,通过下标取值;而集合,通过pop取值,当集合都被清空后会报错 #}<p>列表变量={{list_var}}, 列表单个元素={{list_var.1}}</p><p>元组变量={{tuple_var}}, 元组单个元素={{tuple_var.0}}</p><p>集合变量={{set_var}}, 集合单个元素={{set_var.pop}}, {{set_var.pop}}</p><p>字典变量={{dict_var}}, 字典单个元素={{dict_var.ishappy}}</p><p>对象变量={{obj_var}}, 对象中的方法调用返回的内容={{obj_var.getcwd}}</p></body>
</html>

标签

当数据过于复杂时,需要用到条件判断或循环功能。DTL中的 if 和 for 用法如下:

# views.py#coding=utf-8
import osfrom django.http import HttpResponse  # 返回文字
from django.shortcuts import render  # 返回htmldef index2(request, idd):id_var = iddfruit_list = [{"id": 1, "name": "苹果", "price": 10},{"id": 2, "name": "香蕉", "price": 2.9},{"id": 3, "name": "菠萝", "price": 9.9}]return render(request, template_name='user_list.html', context=locals())
<!DOCTYPE html>
{% load static %}<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><link rel="stylesheet" href="{% static 'plugins' %}">
</head>
<body>{% if  id_var == 0   %}<p>id=0</p>{% elif  id_var <= 10  %}<p>id是1-10以内</p>{% elif  id_var > 10 and id_var <= 100  %}<p>id是11-100以内</p>{% else %}<p>id大于100</p>{% endif %}{% for fruit in fruit_list %}<p>第{{forloop.counter}}行,{{fruit.name}}的价格是{{fruit.price}}</p>{% endfor %}</body>
</html>

for循环中提供了forloop对象

属性描述
forloop.counter显示循环的次数,从1开始
forloop.counter0显示循环的次数,从0开始
forloop.revcounter0倒数显示循环的次数,从0开始
forloop.revcounter倒数显示循环的次数,从1开始
forloop.first判断如果本次是循环的第一次,则结果为True
forloop.last判断如果本次是循环的最后一次,则结果为True
forloop.parentloop在多层嵌套循环中,指向当前循环的上级循环对象

过滤器

内置过滤器

全部内置过滤器请参考:过滤器官方文档,以下只列出一些比较常用的:

【过滤器用法都是{{str|default:"默认值”}} ,没有像python中default()这种用法】

内置过滤器用法示例
last获取列表/元组的最后一个成员{{list | last}}
first获取列表/元组的第一个成员{{list|first}},也可以使用{list.0}}
length获取数据的长度{{list | length}}
default当变量没有值的情况下,系统输出默认值,{{str|default:"默认值”}}
safe标记一个字符串在输出前不需要进一步的 HTML 转义。当自动转义关闭时,该过滤器没有效果。{{htmlcontent| safe}}
date日期时间格式转换{{ value| date:"Y-m-d H:i:s" }}
cut从内容中截取掉同样字符的内容{{content | cut:"hello"}}
filesizeformat把文件大小的数值转换成单位表示{{filesize | filesizeformat})
join用字符串连接一个列表,就像 Python 的 str.join(list) 一样。{{list| join:"-"}}
random随机提取某个成员{list | random}}
truncatechars按字符长度截取内容{{content | truncatechars:30}}
# views.py中相关代码
def index2(request):list_var = ['v', 'vv', 'vvv']time = datetime.datetime.now()url = '<a href="https://www.qq.com">链接</a>'return render(request, template_name='user_list.html', context=locals())
# html文件相关代码  <p>列表中取随机元素={{list_var|random}}</p><p>当前时间={{time|date:'Y-m-d H:i:s'}}</p><p>不存在的字段名={{work|default:'no'}}</p><p>{{url|safe}}</p>

浏览器访问结果:              

 自定义过滤器

在上述for循环中,价格的小数位数是不一致的,我们可以通过自定义过滤器实现此功能。

前置操作:一定要把用到templates的app注册到settings.py的INSTALLED_APPS中。

根据官方文档,我们要在app01目录下,新建一个python包,名为 templatetags,注意这里新建的一定得是python包,而不能是普通的directory。

然后在templatetags目录下,新建一个python文件,这个文件名需要在html文件中加载。

num_format.py代码:

from django import templateregister = template.Library()# @register.filter("df") 
def data_format(content, form=1):return f'%.{form}f' % content# 用装饰器或者用这个
register.filter("df", data_format)

html相关代码:

{% for fruit in fruit_list %}<p>第{{forloop.counter}}行,{{fruit.name}}的价格是{{fruit.price|df:1}}</p>
{% endfor %}

重启!重启!

 然后再通过浏览器访问时,就会发现price字段值都保留到小数点后一位,成功啦~~

模板分离和模板继承 

模板分离

 我们知道,不同路由页面一般都有些公共的内容,我们可以将公共的html代码提取出来,单独存入一个html,以便复用,这样叫做“模板分离”。

新建一个子应用sep,将应用注册模板,编写视图函数,配置路由等。将公共html内容写入public.html,而特定index1.html引用时,语法为

{% include 'public.html' %}

浏览器访问效果:

模板继承 

继承语法:

{% extends 'base.html' %}
自定义块语法:
{% block 块名 %} xxxxx {% endblock %}

红框内容解析:在base.html中写入通用的html代码,特有的模块使用block来编写,然后在auth.html和account.html中对block具体实现。 

绿框内容解析:在base.html中也可以写入block块的默认实现,auth.html中想去除“关闭浏览器”的功能,就重写block,中间为空或改为其它内容。

http://www.dtcms.com/wzjs/823506.html

相关文章:

  • 餐饮公司最好的网站建设品牌推广方案100例
  • 网站建设实训 课程标准dw网页制作破解版
  • 互动网站制作哪些网站是做快消品的
  • 网站备案平台的服务简介有些网站勤换域名
  • 广西专业网站建设鹰眼智能营销系统
  • 制作企业网站的秘诀4399小游戏电脑版网页链接
  • 基层建设期刊上什么网站查询文章国家工程招标网公告
  • 宜春网站设计公司怎样上传网站到百度
  • 哪个网站能下载gif校园文化建设
  • 教育网站制作可以自己做视频网站吗
  • 快速做网站套餐小型办公室网络布线设计方案
  • 自建网站流程渠道网络公司官网
  • 零下一度网站建设成都文化墙设计公司
  • 网站怎么做rss关于继续做好网站建设得通知
  • 门户网站建设汇报开发网站平台
  • 厦门网站建设培训如何评估一个网站
  • 建立大型网站吗网络公司名字四个字
  • iis新建网站不能访问信阳建网站
  • 外贸建站服务推广公司网页制作与设计课程设计报告
  • 外贸网站如何制作绵阳专门做网站的公司
  • 电子商务网站推广主要方式网站模板d一品资源网
  • 网站设计公司有用吗慧聪网的网站建设策略
  • 罗田住房和城乡建设局网站做网站和做阿里巴巴
  • 大型网站订单系统怎么设计金坛网站建设哪家好
  • 想做个赚钱的网站不知道做那种化肥厂的网站摸板
  • 怎么搭建自己的博客网站中昌国际建设集团网站
  • 临沧市住房和城乡建设网站建网站需成本多少钱
  • 桂林相关网站网站由哪些部分组成部分组成
  • 接做网站简介seoer是什么意思
  • 电子商务网站设计模板宿州推广公司