美文网首页
Django框架学习二:模板语言

Django框架学习二:模板语言

作者: 丘山Ivan | 来源:发表于2020-04-04 22:45 被阅读0次

urls.py 中添加index方法,并返回数据。

def index(resquest):
    return render(resquest,'index.html',{
        'name':'xiaoming', # string
        'subject':['语文','数学'], # list
        'info':{'age':'10岁','height':'1.5m'},# dict
        'grade':[
            {'id':1,'subject':'语文','score':'100'},
            {'id': 2, 'subject': '数学', 'score': '60'},
        ] # list[dict]
    })
urlpatterns = [
    path('admin/', admin.site.urls),
    path('login/', login),
    path('index/',index),
]

然后再index.html中解析。通过{{xxx}}的形式解析
字典: .key解析
数组:.下标 解析
循环:{% for item in items %} {{item}} {%endfor%}解析

if 判断:

        {% if 10 >5 %}
            ...
        {% else %}
            ...
        {% endid %}

if ... in 判断

{% if name in list %}
           ...
{% endif %}

for循环

{% for row in grade %}
  ...
{% endfor %}

可以使用HTML标签包裹

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>模板学习</title>
</head>
<body>
    <h1>模板学习</h1>
    <p>姓名:{{ name }}</p>
    <p>学科1:{{ subject.0 }}</p> 
    <p>学科2:{{ subject.1 }}</p>
    <p>身高:{{ info.height }}</p>
    <p>年龄:{{ info.age }}</p>
    <h3>循环</h3>
     {% for item in subject %}
        {{  item }}
     {% endfor %}
    <ul>
        {% for item in subject %}
        <li>{{ item }}</li>
    {% endfor %}
    </ul>
    <table>
        {% for row in grade %}
            <tr>
                <td>{{ row.id }}</td>
                <td>{{ row.subject }}</td>
                <td>{{ row.score }}</td>
                <td>
                    <a href="">编辑</a>
                </td>
                <td>
                    <a href="">删除</a>
                </td>
            </tr>
        {% endfor %}
    </table>
</body>
</html>

母版相关

  • 中定义block {% block xx %} {%endblock%}
  • 继承母版 {%extends 'xxx.html' %}
  • 子版中要替换的内容 {% block xx %} ... {% endblock %}

layout.html 母版示例

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>母版</title>
      {# css 相关block #}
    {% block css %} {% endblock %}
</head>
<body>
<div class="pg-header">
    <div class="logo left">后台管理系统</div>
    <div class="rmenus right">
        <div class="avatar right">
            <img src="/static/images/admin.png">
            <div class="user-info">
                <a href="">个人资料</a>
                <a href="">注销</a>
            </div>
        </div>
        <a href=""><i class="fa fa-commenting-o" aria-hidden="true"></i> 消息</a>
        <a href=""><i class="fa fa-envelope-o" aria-hidden="true"></i> 邮件</a>

    </div>
</div>
<div class="pg-body">
    <div class="menus">
        <a class="menus_class" href={% url 'class' %} ><i class="fa fa-futbol-o"></i> 班级管理</a>
        <a class="menus_students" href={% url 'students' %}><i class="fa fa-futbol-o"></i> 学生管理</a>
        <a class="menus_tearchers" href={% url 'tearchers' %}><i class="fa fa-futbol-o"></i> 老师管理</a>
    </div>
    <div class="content">
         {#  自定义html block  #}
        {% block div %}{% endblock %}

    </div>
</div>
 {#  自定义js block  #}
{% block js %}{% endblock %}

</body>
</html>

子版示例内容 class.html

{#要继承的母版#}
{% extends 'layout.html' %}

{% block css %}
    {# 子版专属的css样式内容 #}
{% endblock %}

{% block div %}
     {# 子版专属的html内容 #}
{% endblock %}

{% block js %}
     {# 子版专属的js内容 #}
{% endblock %}

根据 url 的 name 反生成 url (只有Django框架中有url的别名

urls.py 中配置name别名

urlpatterns = [
    #  查询班级详情
    re_path('^classInfo/(?P<id>\d+).html$', views.classInfo,name = 'classInfo'),# 可以通过名字查到url`
]

classInfo.html文件中的 a标签

# 可以反向查找到 url  可以以加参数
<a href="{% url classInfo class.id %}"></a>

<form action="{% url 'editStudent' class.id %} " method="post">
    ...
</form>

views.py 也可以通过别名反向查询到url

from django.urls import reverse

def classInfo(request,id):
    url = reverse('classInfo')
   

相关文章

网友评论

      本文标题:Django框架学习二:模板语言

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