django上传文件名相同_Django:Templates 模板

 templates 模板,用于在浏览器显示的部分,Django有一套前端的语法规则,组合起来就是所谓的 前端。

需要了解一点的前端知识,本示例以用户登录为例,前端部分不做多讲。

与 views 交互,然后在前端页面呈现

views通过 return render(request, '.html', {}) 中最后的字典形式将数据传送给templates中

由于在配置篇中配置了 static 的文件所以在使用templates中可以在html文件中加上,这样html就可以直接使用静态文件了

{% load static %}

6d3ca5966fe6af324ac8916313d843a5.png

接上篇,可以看到是一个叫做 login.html 的文件

所以需要在 templates 下新建 > login.html

(HTML:How To Make Love628c2b6426b32d9168e85a6e7a31f13c.png 不知道的请自行学习)

login.html 关键代码

{% for msg in messages %}    <p>{{ msg }}p>{% endfor %}<form action="" method="post">    {% csrf_token %}{% for field in login_form %}   {{ field }}    <p>{{ field.errors.as_text }}p>{% endfor %}<span>    {{ form.non_field_errors }}span>    <button type="submit">登 录button>form>
 {# 如果是上传文件的表单需要加上 enctype #} "" method=

模板语法

{{ a }}{% if 条件 %}{% elif 条件 %}{% endif %}{% ifequal user currentuser %}    <h1>Welcome!h1>{% endifequal %}{% for i in list %}{{ forloop.counter }}{{ i }}{% endfor %}
  • 关系比较操作符:>、 =、 <=、 ==、 !=

  • 逻辑运算:not、 and、 or、 in、 not in

  • for 循环获取索引:

    • forloop.counter 索引从1开始算

    • forloop.counter0 索引从0开始算

    • forloop.revcounter 索引最大长度到1

    • forloop.revcounter0 索引最大长度到0

    • forloop.first 当遍历元素为第一项时为真

    • forloop.last 当遍历元素为最后一项时为真

    • forloop.parentloop 用在嵌套for中,获取上一层for的forloop

  • 当列表中可能为空值用 for empty

{% for i in list %}    <li>{{ i }}li>{% empty %}    <li>抱歉,列表为空li>{% endfor %}

模板过滤器

关闭模板转义:safe

{{ "<h1>Hello Worldh1>" | safe }}

转义:autoescape

{% autoescape off/on %}{{ 模板变量 }}{% endautoescape %}

默认值:default

{{ value | default:"nothing" }}

default_if_none

{{ value | default_if_none:"nothing" }}

大小写转换

{{ 'lower' | lower }}{{ 'UPPER' | upper }}

显示前n个字:truncatewords

{{ 'asdfghjkl' | truncatewords:"5" }}

add

{{ 12 | add:"5" }} {{ [1,2,3] | [4,5,6] }}

单引号加上转义号

{{ "AB'CD" | addslashes }}

capfirst 大写变量的第一个字母

{{ 'django' | capfirst }}

center 给定的宽度范围内居中

{{ 'django' | center:"15" }}

cut 移除字符中所有参数相同的字符串

{{ 'String Django Spaces' | cut:" " }}

date 格式化日期变量

{{ date | date:"D d M Y" }}{{ value|date:"D d M Y" }} {{ value|time:"H:i" }}

模板之间的关系

继承

  • 通常一些网页在不同页面跳转中有相同的元素,可以使用继承来代替相同的元素

  • 相同的元素使用一个html,其他html继承这个html

  • 子模板html不需要写html,head,body等元素

父模板

<html lang="en"><head>  <meta charset="UTF-8">  <title>templatestitle>head><body>  {% block navbar %}  <h1>{{ title }}h1>  {% endblock %}  {% block content %}    {% endblock %}body>html>

子模板

{% extends 'base.html' %}{% block navbar %}{{ block.super }}<h1>子模板自己的navbarh1>{% endblock %}{% block content %}{% endblock %}

包含

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值