• (4)Flask项目模板渲染初体验


    一、准备静态资源

    将项目使用到的静态资源拷贝到static目录

    二、创建前台首页html

    创建templates/home/home.html页面,内容包含导航和底部版权两部分,中间内容区域为模板标签。

    注意静态资源路径部分使用了模板标签"{{url_for()}}"来访问static目录下的静态资源,它的第一个参数是静态资源目录static,第二个参数是static目录下面文件的名称:

      1 <!doctype html>
      2 <html lang="zh-CN">
      3 <head>
      4     <meta charset="UTF-8">
      5     <meta http-equiv="X-UA-Compatible" content="IE=edge">
      6     <meta name="renderer" content="webkit">
      7     <meta http-equiv="X-UA-Compatible" content="IE=edge">
      8     <meta name="viewport" content="width=device-width, initial-scale=1 , user-scalable=no">
      9     <title>微电影</title>
     10     <link rel="shortcut icon" href="{{ url_for('static', filename='base/images/logo.png') }}">
     11     <link rel="stylesheet" href="{{ url_for('static', filename='base/css/bootstrap.min.css') }}">
     12     <link rel="stylesheet" href="{{ url_for('static', filename='base/css/bootstrap-movie.css') }}">
     13     <link rel="stylesheet" href="{{ url_for('static', filename='base/css/animate.css') }}">
     14     <style>
     15         .navbar-brand>img {
     16             display: inline;
     17         }
     18 
     19     </style>
     20     <style>
     21         .media{
     22             padding:3px;
     23             border:1px solid #ccc
     24         }
     25 
     26     </style>
     27 </head>
     28 
     29 <body>
     30 <!--导航-->
     31 <nav class="navbar navbar-default navbar-fixed-top">
     32     <div class="container">
     33         <!--小屏幕导航按钮和logo-->
     34         <div class="navbar-header">
     35             <button class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
     36                 <span class="icon-bar"></span>
     37                 <span class="icon-bar"></span>
     38                 <span class="icon-bar"></span>
     39             </button>
     40             <a href="index.html" class="navbar-brand" style="250px;">
     41                 <img src="{{ url_for('static', filename='base/images/logo.png') }}" style="height:30px;">&nbsp;微电影
     42             </a>
     43         </div>
     44         <!--小屏幕导航按钮和logo-->
     45         <!--导航-->
     46         <div class="navbar-collapse collapse">
     47             <form class="navbar-form navbar-left" role="search" style="margin-top:18px;">
     48                 <div class="form-group input-group">
     49                     <input type="text" class="form-control" placeholder="请输入电影名!">
     50                     <span class="input-group-btn">
     51                         <a class="btn btn-default" href="search.html"><span class="glyphicon glyphicon-search"></span>&nbsp;搜索</a>
     52                     </span>
     53                 </div>
     54             </form>
     55             <ul class="nav navbar-nav navbar-right">
     56                 <li>
     57                     <a class="curlink" href="index.html"><span class="glyphicon glyphicon-film"></span>&nbsp;电影</a>
     58                 </li>
     59                 <li>
     60                     <a class="curlink" href="login.html"><span class="glyphicon glyphicon-log-in"></span>&nbsp;登录</a>
     61                 </li>
     62                 <li>
     63                     <a class="curlink" href="register.html"><span class="glyphicon glyphicon-plus"></span>&nbsp;注册</a>
     64                 </li>
     65                 <li>
     66                     <a class="curlink" href="logout.html"><span class="glyphicon glyphicon-log-out"></span>&nbsp;退出</a>
     67                 </li>
     68                 <li>
     69                     <a class="curlink" href="user.html"><span class="glyphicon glyphicon-user"></span>&nbsp;会员</a>
     70                 </li>
     71             </ul>
     72         </div>
     73         <!--导航-->
     74 
     75     </div>
     76 </nav>
     77 <!--导航-->
     78 <!--内容-->
     79 <div class="container" style="margin-top:76px">
     80     {% block content %}{% endblock %}
     81 </div>
     82 <!--内容-->
     83 <!--底部-->
     84 <footer>
     85     <div class="container">
     86         <div class="row">
     87             <div class="col-md-12">
     88                 <p>
     89                     ©&nbsp;2017&nbsp;flaskmovie.xxx.com&nbsp;京ICP备 13046642号-2
     90                 </p>
     91             </div>
     92         </div>
     93     </div>
     94 </footer>
     95 <!--底部-->
     96 <script src="{{ url_for('static', filename='base/js/jquery.min.js') }}"></script>
     97 <script src="{{ url_for('static', filename='base/js/bootstrap.min.js') }}"></script>
     98 <script src="{{ url_for('static', filename='base/js/jquery.singlePageNav.min.js') }}"></script>
     99 <script src="{{ url_for('static', filename='base/js/wow.min.js') }}"></script>
    100 <script src="{{ url_for('static', filename='lazyload/jquery.lazyload.min.js') }}"></script>
    101 <script src="http://cdn.bootcss.com/holder/2.9.4/holder.min.js"></script>
    102 <script>
    103     $(function() {
    104         new WOW().init();
    105     })
    106 
    107 </script>
    108 <script>
    109     $(document).ready(function() {
    110         $("img.lazy").lazyload({
    111             effect: "fadeIn"
    112         });
    113     });
    114 
    115 </script>
    116 </body>
    117 </html>

    三、创建首页内容区域

    创建templates/home/index.html内容,内容部分简单输出一句"Hello world!!!":

    {% extends "home/home.html" %}
    {% block content %}
    <h1>hello world!!!</h1>
    {% endblock %}

    四、修改视图

    修改app/home/views.py文件:

    1 # coding:utf8
    2 from . import home
    3 from flask import render_template
    4 
    5 @home.route("/")
    6 def index():
    7     return render_template("home/index.html")

    这里使用到了模板渲染引擎包render_template。

    五、运行查看效果

    运行manage.py,浏览器访问 http://127.0.0.1:5000/

    【结束】

  • 相关阅读:
    ex01 温度转换1
    12 字典的遍历在 Python2 与 Python3 中区别
    11 序列中有多个最值时会索引出哪个
    10 isalpha() 对于字母的定义
    09 Python3 的深拷贝与浅拷贝
    08 in
    07 len()
    06 “杠零”与空字符
    导航点击字体变色
    清除浮动
  • 原文地址:https://www.cnblogs.com/jun1019/p/11055788.html
Copyright © 2020-2023  润新知