Django框架学习日寄(二)——模板及模板语法

Django框架学习日寄(二)——模板及模板语法

templates 页面模板

  • 返回html文件的语法

    # 1. 优先在根目录的templates中寻找(需要提前配置)
    # 2. 根据app注册顺序,在每个app的templates目录中寻找
    return render(request, <html文件>)
    
    • 默认会根据app注册顺序在app目录下的templates目录寻找.

    • 若根目录下存在templates文件夹, 默认优先app.

    • 寻找优先级可在settings.py内配置"DIRS"项.
      image

静态文件

一般将图片, css, js, 插件都当作静态文件处理

模板语法

模板语法为Django特占语法, 由render内部进行渲染.

{% <struct> %}

本质: 在HTML中写一些占位符, 由数据对占位符进行替换处理.

  • 传值

    # app/views.py
    # 创建url处理函数
    # 返回render附带参数(字典类型)
    def index(req):
    	user_info = {
    		"is_admin": False,
    		"name": "Lovechan",
    		"age": 18,
    		"gender": "male",
    	}
    	books = ["《母猪的产后护理》", "《三体》", "《算法导论》"]
    	return render(req, "index.html", {"user": user_info, "content": books})
    
  • html文件内引用值:

    • 在要调用参数的位置插入 {% valueName %}, 其中valuename为传入的字典中的key.

    • 列表元素的索引罗列采用{% valueName.<index> %}, 如{% content.1 %}.

    • 字典取值采用{% valueName.<key> %}, 如{% user.name %}.

      <!-- index.html -->
      <!DOCTYPE html>
      ...
      <body>
      <h1>用户信息</h1>
      <div>{{ user }}</div>
      <div>
      	{% for k,v in user.items %}
      		<li>{{ k }} : {{ v }}</li>
      	{% endfor %}
      </div>
      <hr/>
      <h1>目录</h1>
      <div>
      	{% for item in content %}
      		<li>{{ item }}</li>
      	{% endfor %}
      </div>
      </body>
      

image

  • 循环

    # 字典取键:.keys,取值:.values,取键值对:.items.
    {% for _ in __ %}
    <some opeations>
    {% endfor %}
    
  • 条件判断

    {% if <表达式> %}
    <some opeations>
    {% elif <表达式> %}
    <some opeations>
    {% else %}
    <some opeations>
    {% endif %}
    
  • 模板文件导入

    <!login.html>
    <!导入文件 语法:{% load <struct> %}>
    {% load static %}
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
    	<meta charset="utf-8"/>
    	<title>EasyBuy后台管理系统</title>
    	<!语法:{% <struct> <filepath> %}>
    	<link rel="stylesheet" href={% static 'css/login.css' %}>
    </head>
    

    (项目结构)
    image

posted @ 2023-04-05 19:52  络辰  阅读(27)  评论(0编辑  收藏  举报