美文网首页
Django的记录(五) 模板

Django的记录(五) 模板

作者: IT_小马哥 | 来源:发表于2019-10-19 22:58 被阅读0次

模板

  1. DTL(django templates,language)django内置,完美兼容
  2. Jinjia2(django支持)

模板用到的函数

render 将模板加载并包装成对象直接返回

def index(request):
    #三个参数,第一个必须是request,然后是模板,然后是传递给模板的值(字典)
   return render(request,'index.html',context = context)

HttpResponse,就返回一个模板或者字符串

def index(request):
    HttpResponse(html)

模板路径

设置模板

  • BASE_DIR代表的是项目所在的当前路径
  • 'DIRS': [os.path.join(BASE_DIR, 'templates')]
  • 'APP_DIRS': True,

APP_DIRS 为True,开始在DIRS下依次查找模板,如果找不到模板,就会检查当前视图的APP是否注册,如果注册,就会去APP下面寻找模板,如果还找不到,就会去其他已经注册的APP中查找模板

要使用APP下的模板,需要将APP在setting注册

模板标签

if

  • 和python中的运算一样,有in、not等
 {% if age < 18 %}
    <p> 未成年</p>
  {% elif age == 18 %}
    <p> 卡哇伊进入</p>
  {% else %}
    <p> 成年</p>
 {% endif %}

for...in标签

  • reversed 反转遍历
  • counter0 下标从0开始(默认从0开始)
  • recounter0 , 反向输出下标(默认到1)
  • forloop 代表循环,first是第一次,last是最后一次
<ul>
    {% for hero in heros %}
        <li>{{ hero }}</li>
    {% endfor %}
</ul>

<td>{{ forloop.counter }}</td>
<td>{{ forloop.counter0 }}</td>
    {% if forloop.first %}
        <tr style="background: pink;">
    {% elif forloop.last %}
        tr style="background: red">
    {% else %}
        <tr>
    {% endif %}
  • for ...in ..empty
  • 当for循环为空的时候执行empty,只要for循环执行过就不会执行empty
{% for comment in comments %}
    <li>{{ comment }}</li>
{% empty %}
    <li> 没有评论</li>
{% endfor %}

字典

  • keys:获取所有的key
  • values:获取所有的value
  • items:获取的是元祖
{% for key in person.keys %}
    <li>{{ key }}</li>
{% endfor %}

url标签

  • book就是url的name
<li><a href="{% url 'book' %}">读书</a></li
  • 传递一个参数的链接
<li><a href="{% url "detail" book_id = '1' %}">最火的</a></li>
  • 登录完毕跳转的链接实现
<li><a href="{% url "login" %}?next=/">登录</a></li>
def login(request):
    next = request.GET.get('next')
    text = "登录完成跳转的页面{0}".format(next)
    return HttpResponse(text)

相关文章

网友评论

      本文标题:Django的记录(五) 模板

      本文链接:https://www.haomeiwen.com/subject/effomctx.html