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

天津网站建设定做网页设计入门 电子书下载

天津网站建设定做,网页设计入门 电子书下载,网络搭建结构图,有哪些建设网站公司1.常用语法 Django模板中只需要记两种特殊符号#xff1a; {{ }}和 {% %} {{ }}表示变量#xff0c;在模板渲染的时候替换成值#xff0c;{% %}表示逻辑相关的操作。 2.变量 {{ 变量名 }} 变量名由字母数字和下划线组成。 点#xff08;.#xff09;在模板语言中有…1.常用语法 Django模板中只需要记两种特殊符号 {{ }}和 {% %} {{ }}表示变量在模板渲染的时候替换成值{% %}表示逻辑相关的操作。 2.变量 {{ 变量名 }} 变量名由字母数字和下划线组成。 点.在模板语言中有特殊的含义用来获取对象的相应属性值。 几个例子 view中代码 def template_test(request):l [11, 22, 33]d {name: alex}class Person(object):def __init__(self, name, age):self.name nameself.age agedef dream(self):return {} is dream....format(self.name)Alex Person(nameAlex, age34)Egon Person(nameEgon, age9000)Eva_J Person(nameEva_J, age18)person_list [Alex, Egon, Eva_J]return render(request, template_test.html, {l: l, d: d, person_list: person_list})模板中支持的写法 {# 取l中的第一个参数 #} {{ l.0 }} {# 取字典中key的值 #} {{ d.name }} {# 取对象的name属性 #} {{ person_list.0.name }} {# .操作只能调用不带参数的方法 #} {{ person_list.0.dream }}注当模板系统遇到一个.时会按照如下的顺序去查询 在字典中查询属性或者方法数字索引 3.过滤器Filter 翻译为过滤器用来修改变量的显示结果。 语法 {{ value|filter_name:参数 }} :左右没有空格 default   {{ value|default:nothing}}如果value值没传的话就显示nothing 注TEMPLATES的OPTIONS可以增加一个选项string_if_invalid找不到可以替代default的的作用。 filesizeformat 将值格式化为一个 “人类可读的” 文件尺寸 例如 13 KB, 4.1 MB, 102 bytes, 等等。例如 {{ value|filesizeformat }}如果 value 是 123456789输出将会是 117.7 MB。 add 给变量加参数 {{ value|add:2 }}value是数字4则输出结果为6。 {{ first|add:second }}如果first是 [1,.2,3] second是 [4,5,6] 那输出结果是 [1,2,3,4,5,6] 。 lower 小写 {{ value|lower }}upper 大写 {{ value|upper}}title 标题 {{ value|title }}ljust 左对齐 {{ value|ljust:10 }}rjust 右对齐 {{ value|rjust:10 }}center 居中 {{ value|center:15 }}length {{ value|length }} 返回value的长度如 value[a, b, c, d]的话就显示4. slice   切片 {{value|slice:2:-1}}first 取第一个元素 {{ value|first }}last 取最后一个元素 {{ value|last }}join 使用字符串拼接列表。同python的str.join(list)。 {{ value|join: // }}truncatechars 如果字符串字符多于指定的字符数量那么会被截断。截断的字符串将以可翻译的省略号序列“...”结尾。 参数截断的字符数 {{ value|truncatechars:9}} date 日期格式化 {{ value|date:Y-m-d H:i:s}} 可格式化输出的字符点击查看。 safe Django的模板中会对HTML标签和JS等语法标签进行自动转义原因显而易见这样是为了安全。但是有的时候我们可能不希望这些HTML元素被转义比如我们做一个内容管理系统后台添加的文章中是经过修饰的这些修饰可能是通过一个类似于FCKeditor编辑加注了HTML修饰符的文本如果自动转义的话显示的就是保护HTML标签的源文件。为了在Django中关闭HTML的自动转义有两种方式如果是一个单独的变量我们可以通过过滤器“|safe”的方式告诉Django这段代码是安全的不必转义。 比如 value 点我 {{ value|safe}} 自定义filter 自定义过滤器只是带有一个或两个参数的Python函数: 变量输入的值 - -不一定是一个字符串参数的值 - 这可以有一个默认值或完全省略 例如在过滤器{{var | foo“bar”}}中过滤器foo将传递变量var和参数“bar”。 自定义filter代码文件摆放位置 app01/__init__.pymodels.pytemplatetags/ # 在app01下面新建一个package package__init__.pyapp01_filters.py # 建一个存放自定义filter的py文件views.py 编写自定义filter from django import template register template.Library()register.filter def fill(value, arg):return value.replace( , arg)register.filter(nameaddSB) def add_sb(value):return {} SB.format(value) 使用自定义filter {# 先导入我们自定义filter那个文件 #} {% load app01_filters %}{# 使用我们自定义的filter #} {{ somevariable|fill:__ }} {{ d.name|addSB }} 4.标签Tags for ul {% for user in user_list %}li{{ user.name }}/li {% endfor %} /ul for循环可用的一些参数 VariableDescriptionforloop.counter当前循环的索引值从1开始forloop.counter0当前循环的索引值从0开始forloop.revcounter当前循环的倒序索引值到1结束forloop.revcounter0当前循环的倒序索引值到0结束forloop.first当前循环是不是第一次循环布尔值forloop.last当前循环是不是最后一次循环布尔值forloop.parentloop本层循环的外层循环 for ... empty ul {% for user in user_list %}li{{ user.name }}/li {% empty %}li空空如也/li {% endfor %} /ul if,elif和else {% if user_list %}用户人数{{ user_list|length }} {% elif black_list %}黑名单数{{ black_list|length }} {% else %}没有用户 {% endif %} 当然也可以只有if和else {% if user_list|length 5 %}七座豪华SUV {% else %}黄包车 {% endif %} if语句支持 and 、or、、、、!、、、in、not in、is、is not判断。 with 定义一个中间变量 {% with totalbusiness.employees.count %}{{ total }} employee{{ total|pluralize }} {% endwith %} csrf_token 这个标签用于跨站请求伪造保护。 在页面的form表单里面写上{% csrf_token %} 注释 {# ... #} 注意事项 Django的模板语言不支持连续判断即不支持以下写法 {% if a b c %} ... {% endif %} Django的模板语言中属性的优先级大于方法 def xx(request):d {a: 1, b: 2, c: 3, items: 100}return render(request, xx.html, {data: d}) 如上我们在使用render方法渲染一个页面的时候传的字典d有一个key是items并且还有默认的 d.items() 方法此时在模板语言中: {{ data.items }} 默认会取d的items key的值。 5.模板继承 Django模版引擎中最强大也是最复杂的部分就是模版继承了。模版继承可以让您创建一个基本的“骨架”模版它包含您站点中的全部元素并且可以定义能够被子模版覆盖的 blocks 。 通过从下面这个例子开始可以容易的理解模版继承 !DOCTYPE html html langen headlink relstylesheet hrefstyle.css /title{% block title %}My amazing site{%/span endblock %}/title /headbodydiv idsidebar{% block sidebar %}ullia href/Home/a/lilia href/blog/Blog/a/li/ul{% endblock %}/divdiv idcontent{% block content %}{% endblock %}/div /body /html 这个模版我们把它叫作 base.html 它定义了一个可以用于两列排版页面的简单HTML骨架。“子模版”的工作是用它们的内容填充空的blocks。 在这个例子中 block 标签定义了三个可以被子模版内容填充的block。 block 告诉模版引擎 子模版可能会覆盖掉模版中的这些位置。 子模版可能看起来是这样的 {% extends base.html %}{% block title %}My amazing blog{% endblock %}{% block content %} {% for entry in blog_entries %}h2{{ entry.title }}/h2p{{ entry.body }}/p {% endfor %} {% endblock %} extends 标签是这里的关键。它告诉模版引擎这个模版“继承”了另一个模版。当模版系统处理这个模版时首先它将定位父模版——在此例中就是“base.html”。 那时模版引擎将注意到 base.html 中的三个 block 标签并用子模版中的内容来替换这些block。根据 blog_entries 的值输出可能看起来是这样的 !DOCTYPE html html langen headlink relstylesheet hrefstyle.css /titleMy amazing blog/title /headbodydiv idsidebarullia href/Home/a/lilia href/blog/Blog/a/li/ul/divdiv idcontenth2Entry one/h2pThis is my first entry./ph2Entry two/h2pThis is my second entry./p/div /body /html 请注意子模版并没有定义 sidebar block所以系统使用了父模版中的值。父模版的 {% block %} 标签中的内容总是被用作备选内容fallback。 这种方式使代码得到最大程度的复用并且使得添加内容到共享的内容区域更加简单例如部分范围内的导航。 这里是使用继承的一些提示 如果你在模版中使用 {% extends %} 标签它必须是模版中的第一个标签。其他的任何情况下模版继承都将无法工作模板渲染的时候django都不知道你在干啥。 在base模版中设置越多的 {% block %} 标签越好。请记住子模版不必定义全部父模版中的blocks所以你可以在大多数blocks中填充合理的默认内容然后只定义你需要的那一个。多一点钩子总比少一点好。 如果你发现你自己在大量的模版中复制内容那可能意味着你应该把内容移动到父模版中的一个 {% block %} 中。 将子页面的内容和继承的母版中block里面的内容同时保留,可以使用{{block.super}} 为了更好的可读性你也可以给你的 {% endblock %} 标签一个 名字 。例如 {% block content %} ... {% endblock content %} 不能在一个模版中定义多个相同名字的 block 标签。 6.组件 可以将常用的页面内容如导航条页尾信息等组件保存在单独的文件中然后在需要使用的地方文件的任意位置按如下语法导入即可。 {% include navbar.html %} 例如有个如下的导航栏,nav.html  !DOCTYPE html html langen headmeta charsetUTF-8titleTitle/titlestyle.c1{background-color: red;height: 40px;}/style /head bodydiv classc1diva hrefxx/aa hrefdd/a/div /div/body /html 嵌入导航栏的页面test.html !DOCTYPE html html langen headmeta charsetUTF-8titleTitle/title /head body {% include nav.html %} h1xxxxxxxxxx/h1 /body /html 组件和插件的简单区别: 组件是提供某一完整功能的模块如编辑器组件QQ空间提供的关注组件 等。而插件更倾向封闭某一功能方法的函数。这两者的区别在 Javascript 里区别很小组件这个名词用得不多一般统称插件。 7.自定义标签和过滤器 1、在settings中的INSTALLED_APPS配置当前app不然django无法找到自定义的simple_tag. 2、在app中创建templatetags模块(模块名只能是templatetags) 3、创建任意 .py 文件如my_tags.py from django import template from django.utils.safestring import mark_saferegister template.Library() #register的名字是固定的,不可改变register.filter def filter_multi(v1,v2):return v1 * v2register.simple_tag #和自定义filter类似只不过接收更灵活的参数没有个数限制。 def simple_tag_multi(v1,v2):return v1 * v2register.simple_tag def my_input(id,arg):result input typetext id%s class%s / %(id,arg,)return mark_safe(result) 4、在使用自定义simple_tag和filter的html文件中导入之前创建的 my_tags.py {% load my_tags %}  5、使用simple_tag和filter如何调用 -------------------------------.html{% load xxx %} # num12 {{ num|filter_multi:2 }} #24{{ num|filter_multi:[22,333,4444] }}{% simple_tag_multi 2 5 %} 参数不限,但不能放在if for语句中 {% simple_tag_multi num 5 %} 注意filter可以用在if、for等语句后simple_tag不可以 {% if num|filter_multi:30 100 %}{{ num|filter_multi:30 }} {% endif %} inclusion_tag 多用于返回html代码片段 示例 templatetags/my_inclusion.py from django import templateregister template.Library()register.inclusion_tag(result.html) #将result.html里面的内容用下面函数的返回值渲染然后作为一个组件一样加载到使用这个函数的html文件里面 def show_results(n): #参数可以传多个进来n 1 if n 1 else int(n)data [第{}项.format(i) for i in range(1, n1)]return {data: data}#这里可以穿多个值和render的感觉是一样的{data1:data1,data2:data2....} ​ templates/snippets/result.html ul{% for choice in data %}li{{ choice }}/li{% endfor %} /ul ​ templates/index.html !DOCTYPE html html langen headmeta charsetUTF-8meta http-equivx-ua-compatible contentIEedgemeta nameviewport contentwidthdevice-width, initial-scale1titleinclusion_tag test/title /head body{% load inclusion_tag_test %}{% show_results 10 %} /body /html 7.静态文件相关 js、css、img等都叫做静态文件那么关于django中静态文件的配置我们就需要在settings配置文件里面写上这写内容 # STATIC_URL /xxx/ #别名,随便写名字但是如果你改名字别忘了前面页面里面如果你是通过/xxx/bootstrap.css的时候如果这里的别名你改成了/static/的话你前端页面的路径要改成/static/bootstrap.css。所以我们都是用下面的load static的方式来使用静态文件路径 STATIC_URL /static/ #别名STATICFILES_DIRS [os.path.join(BASE_DIR,statics), #注意别忘了写逗号,第二个参数就是项目中你存放静态文件的文件夹名称 ]#在引入时就可以:link relstylesheet href/static/css/index.css 目录别名也是一种安全机制浏览器上通过调试台你能够看到的是别名的名字这样别人就不能知道你静态文件夹的名字了不然别人就能通过这个文件夹路径进行攻击。 前端页面引入静态文件的写法因为别名也可能会修改所以使用路径的时候通过load static来找到别名通过别名映射路径的方式来获取静态文件. {% static %} {% load static %} img src{% static images/hi.jpg %} altHi! / 引用JS文件时使用 {% load static %} script src{% static mytest.js %}/script 某个文件多处被用到可以存为一个变量 {% load static %} {% static images/hi.jpg as myphoto %} img src{{ myphoto }}/img {% get_static_prefix %} {% load static %} img src{% get_static_prefix %}images/hi.jpg altHi! / 或者 {% load static %} {% get_static_prefix as STATIC_PREFIX %}img src{{ STATIC_PREFIX }}images/hi.jpg altHi! / img src{{ STATIC_PREFIX }}images/hi2.jpg altHello! / 注意一个html文件中写相对路径时需要注意的一个问题 例子 form action/login//form img src/static/1.jpg alt 等标签需要写路径的地方如果写的是相对路径那么前置的/这个斜杠必须写上不然这个请求会拼接当前网页的路径来发送请求就不能匹配我们的后端路径了
http://www.w-s-a.com/news/78031/

相关文章:

  • 鄂州官方网站食品网站建设需求分析
  • 福州网站建设金森要做好网络营销首先要
  • 中山哪里有好网站建设公司企业培训考试平台下载
  • 域名备案查询 网站备案查询企业网站建设问题研究
  • wordpress无法编辑北京优化网站方法
  • 公司建设一个网站最好的网站建设哪家好
  • 南京市住宅建设总公司网站wordpress 自己写的网页
  • 淄博网站制作企业高端长沙企业网站制作服务报价
  • 网站服务理念中外商贸网站建设
  • 如何自己建立网站中国建设银行网站忘记密码
  • 什么是a站如何在12366网站上做实名认证
  • 斗蟋蟀网站建设谭谭心怎么建设网站
  • 优秀网站开发商郑州网站建设套餐
  • 做伤残鉴约号网站购物网站建设新闻
  • 黄江网站建设公司自己房子做民宿挂什么网站
  • 手游网站做cpc还是cpm广告号宣武郑州阳网站建设
  • vs连接数据库做网站建立网站
  • 电商网站设计图片素材p2p网站建设石家庄
  • 莲塘网站建设如何文字推广一个婚恋网站
  • 医院网站建设工作汇报WordPress不发邮件了
  • 怎么做外语网站个人网页设计作品ps
  • 网站原型怎么做vps如何建两个网站
  • 商城网站建设源码嘉兴seo计费管理
  • 城乡建设网站证件查询系统wordpress 时间代码
  • php网站建设 关键技术做网站哪家正规
  • 网站开发用什么写得比较好谷歌的英文网站
  • 青岛网站建设公司在哪vivo手机商城
  • 兼职刷客在哪个网站做哪个网站做淘宝客
  • 眼科医院网站开发网络营销特点是什么
  • 提交网站给百度增加wordpress插件