美文网首页
Django 2.1.7 创建应用模板

Django 2.1.7 创建应用模板

作者: Devops海洋的渔夫 | 来源:发表于2019-06-04 21:58 被阅读0次

    上一篇中讲诉了关于Django 2.1.7 视图的操作,本篇章开始研究模块这块内容。

    参考文献

    官网文档

    创建模板

    在 assetinfo 目录里创建一个 templates 目录。Django 将会在这个目录里查找模板文件。
    在刚刚创建的 templates 目录里,再创建一个目录 assetinfo,然后在其中新建一个文件 index.html 。
    换句话说,模板文件的路径应该是 polls/templates/polls/index.html 。因为 Django 会寻找到对应的 app_directories ,所以你只需要使用 polls/index.html 就可以引用到这一模板了。

    目录结构如下:

    定义模板

    编写index.html,写入一个标题,后续通过视图引用。
    代码如下:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        <h1>Hello world</h1><br>
        <p>{{ info }}</p><br>
        {%for i in list%}
        {{i}}<br>
        {%endfor%}
    </body>
    </html>
    

    在模板中输出变量语法如下,变量可能是从视图中传递过来的,也可能是在模板中定义的。

    {{变量名}}
    

    在模板中编写代码段语法如下:

    {%代码段%}
    

    上面的例子在代码段里面写的是for循环的语法。

        {%for i in list%}
        {{  i  }}
        {%endfor%}
    

    另外if判断的语法如下:

    {% if latest_question_list %}
        <ul>
        {% for question in latest_question_list %}
            <li><a href="/polls/{{ question.id }}/">{{ question.question_text }}</a></li>
        {% endfor %}
        </ul>
    {% else %}
        <p>No polls are available.</p>
    {% endif %}
    

    视图调用模板

    调用模板分为三步骤:

    • 1.找到模板
    • 2.定义上下文
    • 3.渲染模板

    打开assetinfo/views.py文件,调用上面定义的模板文件

    from django.http import HttpResponse
    from django.template import loader
    
    def index(request):
        # 1.获取模板
        template = loader.get_template('assetinfo/index.html')
        # 2.定义上下文
        context = {
            'info':'资产管理',
            'list': ['测试服务器','redis服务器','memcached服务器','nginx服务器'],
        }
        # 3.渲染模板
        return HttpResponse(template.render(context, request))
    

    使用浏览器访问测试如下:

    可以看到浏览器都渲染好了传递的数据。
    从上面的三个步骤操作,的确可以传递数据,但是就会觉得这样重复去写的话,会很麻烦。
    那么是不是可以将三个步骤抽出来一个方法,然后快速执行呢?

    自定义调用模板方法

    from django.http import HttpResponse
    from django.template import loader
    
    
    def my_render(request, template_file, context):
        # 1.获取模板
        template = loader.get_template(template_file)
        # 2.定义上下文
        context = context
        # 3.渲染模板
        return HttpResponse(template.render(context, request))
    
    
    def index(request):
        context = {
            'info': '资产管理',
            'list': ['测试服务器', 'redis服务器', 'memcached服务器', 'nginx服务器'],
        }
    
        return my_render(request, template_file='assetinfo/index.html', context=context)
    

    可以看到,抽出一个方法之后,很多重复的步骤就不用写了。主要的工作主要定义好内容的context即可。

    测试访问正常如下:

    其实Django提供的一个render()方法就是已经实现了这个功能了。

    使用Django的render()方法调用模板

    from django.shortcuts import render
    
    def index(request):
        context = {
            'info': '资产管理',
            'list': ['测试服务器', 'redis服务器', 'memcached服务器', 'nginx服务器'],
        }
    
        return render(request, 'assetinfo/index.html', context)
    

    浏览器测试访问如下:

    相关文章

      网友评论

          本文标题:Django 2.1.7 创建应用模板

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