美文网首页
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