搭建前台页面

前台布局搭建

static中的文件拷贝到项目的static目录下

app/templates/home下新建home.html,当作基础模板,并修改静态资源链接

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

新建index.html,继承home.html

  1. {% extends 'home/home.html' %}
  2. {% block content %}
  3. <h1>hello,world</h1>
  4. {% endblock %}

修改视图函数

app/home/views.py

  1. @home.route('/')
  2. def index():
  3. return render_template('home/index.html')

运行,浏览器访问,就可看到主页面了

会员登录页面搭建

新建login.html

  1. {% extends 'home/home.html' %}
  2. {% block content %}
  3. <div class="row">
  4. <div class="col-md-4 col-md-offset-4">
  5. <div class="panel panel-primary">
  6. <div class="panel-heading">
  7. <h3 class="panel-title"><span class="glyphicon glyphicon-log-in"></span>&nbsp;会员登录</h3>
  8. </div>
  9. <div class="panel-body">
  10. <form role="form">
  11. <fieldset>
  12. <div class="form-group">
  13. <label for="input_contact"><span class="glyphicon glyphicon-user"></span>&nbsp;账号</label>
  14. <input id="input_contact" class="form-control input-lg" placeholder="用户名/邮箱/手机号码" name="contact" type="text" autofocus>
  15. </div>
  16. <div class="col-md-12" id="error_contact"></div>
  17. <div class="form-group">
  18. <label for="input_password"><span class="glyphicon glyphicon-lock"></span>&nbsp;密码</label>
  19. <input id="input_password" class="form-control input-lg" placeholder="密码" name="password" type="password" value="">
  20. </div>
  21. <div class="col-md-12" id="error_password"></div>
  22. <a href="user.html" class="btn btn-lg btn-success btn-block">登录</a>
  23. </fieldset>
  24. </form>
  25. </div>
  26. </div>
  27. </div>
  28. </div>
  29. {% endblock %}

创建视图函数

  1. @home.route('/login/')
  2. def login():
  3. return render_template('home/login.html')
  4. @home.route('/lougot/')
  5. def lougot():
  6. return redirect(url_for('home.index'))

浏览器访问即可看到登陆页面

会员注册页面搭建

新建regist.html

  1. {% extends 'home/home.html' %}
  2. {% block content %}
  3. <div class="row">
  4. <div class="col-md-4 col-md-offset-4">
  5. <div class="panel panel-success">
  6. <div class="panel-heading">
  7. <h3 class="panel-title"><span class="glyphicon glyphicon-plus"></span>&nbsp;会员注册</h3>
  8. </div>
  9. <div class="panel-body">
  10. <form role="form">
  11. <fieldset>
  12. <div class="form-group">
  13. <label for="input_name"><span class="glyphicon glyphicon-user"></span>&nbsp;昵称</label>
  14. <input id="input_name" class="form-control input-lg" placeholder="昵称" name="name" type="text" autofocus>
  15. </div>
  16. <div class="col-md-12" id="error_name"></div>
  17. <div class="form-group">
  18. <label for="input_email"><span class="glyphicon glyphicon-envelope"></span>&nbsp;邮箱</label>
  19. <input id="input_email" class="form-control input-lg" placeholder="邮箱" name="email" type="email" autofocus>
  20. </div>
  21. <div class="col-md-12" id="error_email"></div>
  22. <div class="form-group">
  23. <label for="input_phone"><span class="glyphicon glyphicon-phone"></span>&nbsp;手机</label>
  24. <input id="input_phone" class="form-control input-lg" placeholder="手机" name="phone" type="text" autofocus>
  25. </div>
  26. <div class="col-md-12" id="error_phone"></div>
  27. <div class="form-group">
  28. <label for="input_password"><span class="glyphicon glyphicon-lock"></span>&nbsp;密码</label>
  29. <input id="input_password" class="form-control input-lg" placeholder="密码" name="password" type="password" value="">
  30. </div>
  31. <div class="col-md-12" id="error_password"></div>
  32. <div class="form-group">
  33. <label for="input_repassword"><span class="glyphicon glyphicon-lock"></span>&nbsp;确认密码</label>
  34. <input id="input_repassword" class="form-control input-lg" placeholder="确认密码" name="repassword" type="password" value="">
  35. </div>
  36. <div class="col-md-12" id="error_repassword"></div>
  37. <a href="user.html" class="btn btn-lg btn-success btn-block">注册</a>
  38. </fieldset>
  39. </form>
  40. </div>
  41. </div>
  42. </div>
  43. </div>
  44. {% endblock %}

创建视图函数

  1. @home.route('/regist/')
  2. def regist():
  3. return render_template('home/regist.html')

修改home.html中的链接

  1. <li>
  2. <a class="curlink" href="{{ url_for('home.regist') }}"><span class="glyphicon glyphicon-plus"></span>&nbsp;注册</a>
  3. </li>

访问即可看到注册页面

会员中心页面搭建

新建menu.html, 会员中心左侧菜单栏

  1. <div class="col-md-3">
  2. <div class="list-group">
  3. <a id="home_user" href="{{ url_for('home.user') }}" class="list-group-item">
  4. <span class="glyphicon glyphicon-user"></span>&nbsp;会员中心
  5. </a>
  6. <a id="home_pwd" href="{{ url_for('home.pwd') }}" class="list-group-item">
  7. <span class="glyphicon glyphicon-lock"></span>&nbsp;修改密码
  8. </a>
  9. <a id="home_comments" href="{{ url_for('home.comments') }}" class="list-group-item">
  10. <span class="glyphicon glyphicon-comment"></span>&nbsp;评论记录
  11. </a>
  12. <a id="home_loginlog" href="{{ url_for('home.loginlog') }}" class="list-group-item">
  13. <span class="glyphicon glyphicon-calendar"></span>&nbsp;登录日志
  14. </a>
  15. <a id="home_moviecol" href="{{ url_for('home.moviecol') }}" class="list-group-item">
  16. <span class="glyphicon glyphicon-heart"></span>&nbsp;收藏电影
  17. </a>
  18. </div>
  19. </div>

新建视图函数

  1. @home.route('/user/')
  2. def user():
  3. return render_template('home/user.html')
  4. @home.route('/pwd/')
  5. def pwd():
  6. return render_template('home/pwd.html')
  7. @home.route('/comments/')
  8. def comments():
  9. return render_template('home/comments.html')
  10. @home.route('/loginlog/')
  11. def loginlog():
  12. return render_template('home/loginlog.html')
  13. @home.route('/moviecol/')
  14. def moviecol():
  15. return render_template('home/moviecol.html')

根据视图函数新建HTML

app/templates/home/user.html
  1. {% extends 'home/home.html' %}
  2. {% block css %}
  3. <style>
  4. .col-lg-1, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-md-1, .col-md-10, .col-md-11, .col-md-12, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-sm-1, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-xs-1, .col-xs-10, .col-xs-11, .col-xs-12, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9{
  5. padding-right: 3px;
  6. padding-left: 3px;
  7. }
  8. </style>
  9. {% endblock %}
  10. {% block content %}
  11. {% include 'home/menu.html' %}
  12. <div class="col-md-9">
  13. <div class="panel panel-warning">
  14. <div class="panel-heading">
  15. <h3 class="panel-title"><span class="glyphicon glyphicon-map-marker"></span>&nbsp;会员中心</h3>
  16. </div>
  17. <div class="panel-body">
  18. <form role="form">
  19. <fieldset>
  20. <div class="form-group">
  21. <label for="input_name"><span class="glyphicon glyphicon-user"></span>&nbsp;昵称</label>
  22. <input id="input_name" class="form-control" placeholder="昵称" name="name" type="text" autofocus value="jinlong">
  23. </div>
  24. <div class="col-md-12" id="error_name"></div>
  25. <div class="form-group">
  26. <label for="input_email"><span class="glyphicon glyphicon-envelope"></span>&nbsp;邮箱</label>
  27. <input id="input_email" class="form-control" placeholder="邮箱" name="email" type="email" autofocus value="1780316635@qq.com">
  28. </div>
  29. <div class="col-md-12" id="error_email"></div>
  30. <div class="form-group">
  31. <label for="input_phone"><span class="glyphicon glyphicon-phone"></span>&nbsp;手机</label>
  32. <input id="input_phone" class="form-control" placeholder="手机" name="phone" type="text" autofocus value="13700632835">
  33. </div>
  34. <div class="col-md-12" id="error_phone"></div>
  35. <div class="form-group">
  36. <label for="input_face"><span class="glyphicon glyphicon-picture"></span>&nbsp;头像</label>
  37. <img src="holder.js/100x100" class="img-responsive img-rounded">
  38. <a class="btn btn-primary" style="margin-top:6px;"><span class="glyphicon glyphicon-open"></span>&nbsp;上传头像</a>
  39. <input id="input_face" class="form-control" name="face" type="hidden" autofocus>
  40. </div>
  41. <div class="col-md-12" id="error_face"></div>
  42. <div class="form-group">
  43. <label for="input_info"><span class="glyphicon glyphicon-edit"></span>&nbsp;简介</label>
  44. <textarea class="form-control" rows="10" id="input_info">十年窗下无人问,一举成名天下知</textarea>
  45. </div>
  46. <div class="col-md-12" id="error_info"></div>
  47. <a href="user.html" class="btn btn-success"><span class="glyphicon glyphicon-saved"></span>&nbsp;保存修改</a>
  48. </fieldset>
  49. </form>
  50. </div>
  51. </div>
  52. </div>
  53. {% endblock %}
  54. {% block js %}
  55. <script>
  56. $(document).ready(function () {
  57. $("#home_user").addClass("active");
  58. })
  59. </script>
  60. {% endblock %}
app/templates/home/pwd.html
  1. {% extends 'home/home.html' %}
  2. {% block css %}
  3. <style>
  4. .col-lg-1, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-md-1, .col-md-10, .col-md-11, .col-md-12, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-sm-1, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-xs-1, .col-xs-10, .col-xs-11, .col-xs-12, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9{
  5. padding-right: 3px;
  6. padding-left: 3px;
  7. }
  8. </style>
  9. {% endblock %}
  10. {% block content %}
  11. {% include 'home/menu.html' %}
  12. <div class="col-md-9">
  13. <div class="panel panel-warning">
  14. <div class="panel-heading">
  15. <h3 class="panel-title"><span class="glyphicon glyphicon-map-marker"></span>&nbsp;修改密码</h3>
  16. </div>
  17. <div class="panel-body">
  18. <form role="form">
  19. <fieldset>
  20. <div class="form-group">
  21. <label for="input_oldpwd"><span class="glyphicon glyphicon-lock"></span>&nbsp;旧密码</label>
  22. <input id="input_oldpwd" class="form-control" placeholder="旧密码" name="oldpwd" type="password" autofocus>
  23. </div>
  24. <div class="col-md-12" id="error_oldpwd"></div>
  25. <div class="form-group">
  26. <label for="input_newpwd"><span class="glyphicon glyphicon-lock"></span>&nbsp;新密码</label>
  27. <input id="input_newpwd" class="form-control" placeholder="新密码" name="newpwd" type="password" autofocus>
  28. </div>
  29. <div class="col-md-12" id="error_newpwd"></div>
  30. <a href="login.html" class="btn btn-success"><span class="glyphicon glyphicon-edit"></span>&nbsp;修改密码</a>
  31. </fieldset>
  32. </form>
  33. </div>
  34. </div>
  35. </div>
  36. {% endblock %}
  37. {% block js %}
  38. <script>
  39. $(document).ready(function () {
  40. $("#home_pwd").addClass("active");
  41. })
  42. </script>
  43. {% endblock %}
app/templates/home/comments.html
  1. {% extends 'home/home.html' %}
  2. {% block css %}
  3. <style>
  4. .col-lg-1, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-md-1, .col-md-10, .col-md-11, .col-md-12, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-sm-1, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-xs-1, .col-xs-10, .col-xs-11, .col-xs-12, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9{
  5. padding-right: 3px;
  6. padding-left: 3px;
  7. }
  8. </style>
  9. {% endblock %}
  10. {% block content %}
  11. {% include 'home/menu.html' %}
  12. <div class="col-md-9">
  13. <div class="panel panel-warning">
  14. <div class="panel-heading">
  15. <h3 class="panel-title"><span class="glyphicon glyphicon-map-marker"></span>&nbsp;评论记录</h3>
  16. </div>
  17. <div class="panel-body">
  18. <ul class="commentList">
  19. <li class="item cl">
  20. <a href="user.html">
  21. <i class="avatar size-L radius">
  22. <img alt="50x50" src="holder.js/50x50" class="img-circle" style="border:1px solid #abcdef;">
  23. </i>
  24. </a>
  25. <div class="comment-main">
  26. <header class="comment-header">
  27. <div class="comment-meta">
  28. <a class="comment-author" href="user.html">xiaoli</a>
  29. 评论于
  30. <time title="2016-12-07 09:12:51" datetime="2016-12-07 09:12:51">2017-03-01 09:12:51</time>
  31. </div>
  32. </header>
  33. <div class="comment-body">
  34. <p>这电影真好看!</p>
  35. </div>
  36. </div>
  37. </li>
  38. <li class="item cl">
  39. <a href="user.html">
  40. <i class="avatar size-L radius">
  41. <img alt="50x50" src="holder.js/50x50" class="img-circle" style="border:1px solid #abcdef;">
  42. </i>
  43. </a>
  44. <div class="comment-main">
  45. <header class="comment-header">
  46. <div class="comment-meta">
  47. <a class="comment-author" href="user.html">xiaoli</a>
  48. 评论于
  49. <time title="2016-12-07 09:12:51" datetime="2016-12-07 09:12:51">2017-03-01 09:12:51</time>
  50. </div>
  51. </header>
  52. <div class="comment-body">
  53. <p>这电影真好看!</p>
  54. </div>
  55. </div>
  56. </li>
  57. <li class="item cl">
  58. <a href="user.html">
  59. <i class="avatar size-L radius">
  60. <img alt="50x50" src="holder.js/50x50" class="img-circle" style="border:1px solid #abcdef;">
  61. </i>
  62. </a>
  63. <div class="comment-main">
  64. <header class="comment-header">
  65. <div class="comment-meta">
  66. <a class="comment-author" href="user.html">xiaoli</a>
  67. 评论于
  68. <time title="2016-12-07 09:12:51" datetime="2016-12-07 09:12:51">2017-03-01 09:12:51</time>
  69. </div>
  70. </header>
  71. <div class="comment-body">
  72. <p>这电影真好看!</p>
  73. </div>
  74. </div>
  75. </li>
  76. <li class="item cl">
  77. <a href="user.html">
  78. <i class="avatar size-L radius">
  79. <img alt="50x50" src="holder.js/50x50" class="img-circle" style="border:1px solid #abcdef;">
  80. </i>
  81. </a>
  82. <div class="comment-main">
  83. <header class="comment-header">
  84. <div class="comment-meta">
  85. <a class="comment-author" href="user.html">xiaoli</a>
  86. 评论于
  87. <time title="2016-12-07 09:12:51" datetime="2016-12-07 09:12:51">2017-03-01 09:12:51</time>
  88. </div>
  89. </header>
  90. <div class="comment-body">
  91. <p>这电影真好看!</p>
  92. </div>
  93. </div>
  94. </li>
  95. <li class="item cl">
  96. <a href="user.html">
  97. <i class="avatar size-L radius">
  98. <img alt="50x50" src="holder.js/50x50" class="img-circle" style="border:1px solid #abcdef;">
  99. </i>
  100. </a>
  101. <div class="comment-main">
  102. <header class="comment-header">
  103. <div class="comment-meta">
  104. <a class="comment-author" href="user.html">xiaoli</a>
  105. 评论于
  106. <time title="2016-12-07 09:12:51" datetime="2016-12-07 09:12:51">2017-03-01 09:12:51</time>
  107. </div>
  108. </header>
  109. <div class="comment-body">
  110. <p>这电影真好看!</p>
  111. </div>
  112. </div>
  113. </li>
  114. </ul>
  115. <div class="col-md-12 text-center">
  116. <nav aria-label="Page navigation">
  117. <ul class="pagination">
  118. <li>
  119. <a href="#" aria-label="First">
  120. <span aria-hidden="true">首页</span>
  121. </a>
  122. </li>
  123. <li>
  124. <a href="#" aria-label="Previous">
  125. <span aria-hidden="true">上一页</span>
  126. </a>
  127. </li>
  128. <li><a href="#">1&nbsp;/&nbsp;10</a></li>
  129. <li>
  130. <a href="#" aria-label="Next">
  131. <span aria-hidden="true">下一页</span>
  132. </a>
  133. </li>
  134. <li>
  135. <a href="#" aria-label="Last">
  136. <span aria-hidden="true">尾页</span>
  137. </a>
  138. </li>
  139. </ul>
  140. </nav>
  141. </div>
  142. </div>
  143. </div>
  144. </div>
  145. {% endblock %}
  146. {% block js %}
  147. <script>
  148. $(document).ready(function () {
  149. $("#home_comments").addClass("active");
  150. })
  151. </script>
  152. {% endblock %}
app/templates/home/loginlog.html
  1. {% extends 'home/home.html' %}
  2. {% block css %}
  3. <style>
  4. .col-lg-1, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-md-1, .col-md-10, .col-md-11, .col-md-12, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-sm-1, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-xs-1, .col-xs-10, .col-xs-11, .col-xs-12, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9{
  5. padding-right: 3px;
  6. padding-left: 3px;
  7. }
  8. </style>
  9. {% endblock %}
  10. {% block content %}
  11. {% include 'home/menu.html' %}
  12. <div class="col-md-9">
  13. <div class="panel panel-warning">
  14. <div class="panel-heading">
  15. <h3 class="panel-title"><span class="glyphicon glyphicon-map-marker"></span>&nbsp;登录日志</h3>
  16. </div>
  17. <div class="panel-body">
  18. <table class="table table-bordered">
  19. <tr>
  20. <td style="width:10%">编号</td>
  21. <td style="width:30%">登录时间</td>
  22. <td style="width:30%">登录IP</td>
  23. <td style="width:30%">登录地址</td>
  24. </tr>
  25. <tr>
  26. <td>1</td>
  27. <td>2017-01-01 12:00:00</td>
  28. <td>192.168.4.1</td>
  29. <td>云南昆明</td>
  30. </tr>
  31. <tr>
  32. <td>1</td>
  33. <td>2017-01-01 12:00:00</td>
  34. <td>192.168.4.1</td>
  35. <td>云南昆明</td>
  36. </tr>
  37. <tr>
  38. <td>1</td>
  39. <td>2017-01-01 12:00:00</td>
  40. <td>192.168.4.1</td>
  41. <td>云南昆明</td>
  42. </tr>
  43. <tr>
  44. <td>1</td>
  45. <td>2017-01-01 12:00:00</td>
  46. <td>192.168.4.1</td>
  47. <td>云南昆明</td>
  48. </tr>
  49. <tr>
  50. <td>1</td>
  51. <td>2017-01-01 12:00:00</td>
  52. <td>192.168.4.1</td>
  53. <td>云南昆明</td>
  54. </tr>
  55. </table>
  56. </div>
  57. </div>
  58. </div>
  59. {% endblock %}
  60. {% block js %}
  61. <script>
  62. $(document).ready(function () {
  63. $("#home_loginlog").addClass("active");
  64. })
  65. </script>
  66. {% endblock %}
app/templates/home/moviecol.html
  1. {% extends 'home/home.html' %}
  2. {% block css %}
  3. <style>
  4. .navbar-brand>img {
  5. display: inline;
  6. }
  7. .col-lg-1, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-md-1, .col-md-10, .col-md-11, .col-md-12, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-sm-1, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-xs-1, .col-xs-10, .col-xs-11, .col-xs-12, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9{
  8. padding-right: 3px;
  9. padding-left: 3px;
  10. }
  11. .media{
  12. padding:3px;
  13. border:1px solid #ccc
  14. }
  15. </style>
  16. {% endblock %}
  17. {% block content %}
  18. {% include 'home/menu.html' %}
  19. <div class="col-md-9">
  20. <div class="panel panel-warning">
  21. <div class="panel-heading">
  22. <h3 class="panel-title"><span class="glyphicon glyphicon-map-marker"></span>&nbsp;收藏电影</h3>
  23. </div>
  24. <div class="panel-body">
  25. <div class="col-md-12">
  26. <div class="media">
  27. <div class="media-left">
  28. <a href="play.html">
  29. <img class="media-object" src="holder.js/131x83" alt="环太平洋">
  30. </a>
  31. </div>
  32. <div class="media-body">
  33. <h4 class="media-heading">环太平洋<a href="play.html" class="label label-primary pull-right"><span class="glyphicon glyphicon-play"></span>播放影片</a></h4>
  34. 该片主要讲述了人类为了抵抗怪兽的进攻,研制出了高大的机器战士与来犯怪兽进行对抗的故事。
  35. </div>
  36. </div>
  37. <div class="media">
  38. <div class="media-left">
  39. <a href="play.html">
  40. <img class="media-object" src="holder.js/131x83" alt="环太平洋">
  41. </a>
  42. </div>
  43. <div class="media-body">
  44. <h4 class="media-heading">环太平洋<a href="play.html" class="label label-primary pull-right"><span class="glyphicon glyphicon-play"></span>播放影片</a></h4>
  45. 该片主要讲述了人类为了抵抗怪兽的进攻,研制出了高大的机器战士与来犯怪兽进行对抗的故事。
  46. </div>
  47. </div>
  48. <div class="media">
  49. <div class="media-left">
  50. <a href="play.html">
  51. <img class="media-object" src="holder.js/131x83" alt="环太平洋">
  52. </a>
  53. </div>
  54. <div class="media-body">
  55. <h4 class="media-heading">环太平洋<a href="play.html" class="label label-primary pull-right"><span class="glyphicon glyphicon-play"></span>播放影片</a></h4>
  56. 该片主要讲述了人类为了抵抗怪兽的进攻,研制出了高大的机器战士与来犯怪兽进行对抗的故事。
  57. </div>
  58. </div>
  59. <div class="media">
  60. <div class="media-left">
  61. <a href="play.html">
  62. <img class="media-object" src="holder.js/131x83" alt="环太平洋">
  63. </a>
  64. </div>
  65. <div class="media-body">
  66. <h4 class="media-heading">环太平洋<a href="play.html" class="label label-primary pull-right"><span class="glyphicon glyphicon-play"></span>播放影片</a></h4>
  67. 该片主要讲述了人类为了抵抗怪兽的进攻,研制出了高大的机器战士与来犯怪兽进行对抗的故事。
  68. </div>
  69. </div>
  70. <div class="media">
  71. <div class="media-left">
  72. <a href="play.html">
  73. <img class="media-object" src="holder.js/131x83" alt="环太平洋">
  74. </a>
  75. </div>
  76. <div class="media-body">
  77. <h4 class="media-heading">环太平洋<a href="play.html" class="label label-primary pull-right"><span class="glyphicon glyphicon-play"></span>播放影片</a></h4>
  78. 该片主要讲述了人类为了抵抗怪兽的进攻,研制出了高大的机器战士与来犯怪兽进行对抗的故事。
  79. </div>
  80. </div>
  81. </div>
  82. <div class="col-md-12 text-center" style="margin-top:6px;">
  83. <nav aria-label="Page navigation">
  84. <ul class="pagination">
  85. <li>
  86. <a href="#" aria-label="First">
  87. <span aria-hidden="true">首页</span>
  88. </a>
  89. </li>
  90. <li>
  91. <a href="#" aria-label="Previous">
  92. <span aria-hidden="true">上一页</span>
  93. </a>
  94. </li>
  95. <li><a href="#">1&nbsp;/&nbsp;10</a></li>
  96. <li>
  97. <a href="#" aria-label="Next">
  98. <span aria-hidden="true">下一页</span>
  99. </a>
  100. </li>
  101. <li>
  102. <a href="#" aria-label="Last">
  103. <span aria-hidden="true">尾页</span>
  104. </a>
  105. </li>
  106. </ul>
  107. </nav>
  108. </div>
  109. </div>
  110. </div>
  111. </div>
  112. {% endblock %}
  113. {% block js %}
  114. <script>
  115. $(document).ready(function () {
  116. $("#home_moviecol").addClass("active");
  117. })
  118. </script>
  119. {% endblock %}

浏览器访问即可看到会员中心页面了

电影列表页面搭建

新建视图函数,index的视图函数前面已经写过了

  1. @home.route('/animation/')
  2. def animation():
  3. return render_template('home/animation.html')

新建app/templates/home/layout.html文件,当作index.html的基模板

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

新建app/templates/home/animation.html,轮播图

  1. <!doctype html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>热映电影</title>
  6. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='anim/css/style.css') }}">
  7. </head>
  8. <body>
  9. <!--轮播图 开始 -->
  10. <div class="main_banner">
  11. <div class="main_banner_wrap">
  12. <canvas id="myCanvas" width="150" height="150"></canvas>
  13. <div class="main_banner_box" id="m_box">
  14. <a href="javascript:void(0)" class="banner_btn js_pre">
  15. <span class="banner_btn_arrow"><i></i></span>
  16. </a>
  17. <a href="javascript:void(0)" class="banner_btn btn_next js_next">
  18. <span class="banner_btn_arrow"><i></i></span>
  19. </a>
  20. <ul>
  21. <li id="imgCard0">
  22. <a href=""><span style="opacity:0;"></span></a>
  23. <img src="{{ url_for('static', filename='anim/main_banner/big0020150102211033.jpg') }}" alt="">
  24. <p style="bottom:0">周杰伦粉丝版MV</p>
  25. </li>
  26. <li id="imgCard1">
  27. <a href=""><span style="opacity:0.4;"></span></a>
  28. <img src="{{ url_for('static', filename='anim/main_banner/big0120150101183428.jpg') }}" alt="">
  29. <p>乐侃有声节目第二期</p>
  30. </li>
  31. <li id="imgCard2">
  32. <a href=""><span style="opacity:0.4;" ></span></a>
  33. <img src="{{ url_for('static', filename='anim/main_banner/big0320150101183351.jpg') }}" alt="">
  34. <p>乐见大牌:”荣“耀之声,”维“我独尊</p>
  35. </li>
  36. <li id="imgCard3">
  37. <a href=""><span style="opacity:0.4;"></span></a>
  38. <img src="{{ url_for('static', filename='anim/main_banner/big0420150101224343.jpg') }}" alt="">
  39. <p>王力宏四年心血结晶</p>
  40. </li>
  41. <li id="imgCard4">
  42. <a href=""><span style="opacity:0.4;"></span></a>
  43. <img src="{{ url_for('static', filename='anim/main_banner/big0720150102210934.jpg') }}" alt="">
  44. <p>MV精选:《武媚》女神团美艳大比拼</p>
  45. </li>
  46. </ul>
  47. <!--火狐倒影图层-->
  48. <p id="rflt"></p>
  49. <!--火狐倒影图层-->
  50. </div>
  51. <!--序列号按钮-->
  52. <div class="btn_list">
  53. <span class="curr"></span><span></span><span></span><span></span><span></span>
  54. </div>
  55. </div>
  56. </div>
  57. <!--轮播图 结束 -->
  58. <script type="text/javascript" src="{{ url_for('static', filename='anim/js/jquery.js') }}"></script>
  59. <script type="text/javascript" src="{{ url_for('static', filename='anim/js/script.js') }}"></script>
  60. </body>
  61. </html>

新建app/static/anim文件夹,将animation中的静态资源拷贝到这个文件夹下

修改index.html内容

  1. {% extends 'home/layout.html' %}
  2. {% block content %}
  3. <!--热门电影-->
  4. <section id="hotmovie" style="margin-top:76px">
  5. <div class="container">
  6. <div class="row wow fadeInRight" data-wow-delay="0.6s">
  7. <div class="row">
  8. <iframe class="wow fadeIn" width="100%" height="375px" frameborder=0 scrolling=no src="{{ url_for('home.animation') }}"></iframe>
  9. </div>
  10. </div>
  11. </div>
  12. </section>
  13. <!--热门电影-->
  14. <!--电影列表-->
  15. <section id="movielist">
  16. <div class="container">
  17. <div class="row wow fadeIn" data-wow-delay="0.6s">
  18. <div class="col-md-12 table-responsive">
  19. <table class="table text-left table-bordered" id="movietags">
  20. <tr>
  21. <td style="width:10%;">电影标签</td>
  22. <td style="width:90%;">
  23. <a class="label label-info"><span class="glyphicon glyphicon-tag">&nbsp;标签一</span></a>
  24. &nbsp;
  25. <a class="label label-info"><span class="glyphicon glyphicon-tag">&nbsp;标签一</span></a>
  26. &nbsp;
  27. <a class="label label-info"><span class="glyphicon glyphicon-tag">&nbsp;标签一</span></a>
  28. &nbsp;
  29. <a class="label label-info"><span class="glyphicon glyphicon-tag">&nbsp;标签一</span></a>
  30. &nbsp;
  31. <a class="label label-info"><span class="glyphicon glyphicon-tag">&nbsp;标签一</span></a>
  32. </tr>
  33. <tr>
  34. <td>电影星级</td>
  35. <td>
  36. <a class="label label-warning"><span class="glyphicon glyphicon-star">&nbsp;一星</span></a>
  37. &nbsp;
  38. <a class="label label-warning"><span class="glyphicon glyphicon-star">&nbsp;二星</span></a>
  39. &nbsp;
  40. <a class="label label-warning"><span class="glyphicon glyphicon-star">&nbsp;三星</span></a>
  41. &nbsp;
  42. <a class="label label-warning"><span class="glyphicon glyphicon-star">&nbsp;四星</span></a>
  43. &nbsp;
  44. <a class="label label-warning"><span class="glyphicon glyphicon-star">&nbsp;五星</span></a>
  45. </td>
  46. </tr>
  47. <tr>
  48. <td>上映时间</td>
  49. <td>
  50. <a class="label label-default"><span class="glyphicon glyphicon-time">&nbsp;最近</span></a>
  51. &nbsp;
  52. <a class="label label-default"><span class="glyphicon glyphicon-time">&nbsp;2017</span></a>
  53. &nbsp;
  54. <a class="label label-default"><span class="glyphicon glyphicon-time">&nbsp;2016</span></a>
  55. &nbsp;
  56. <a class="label label-default"><span class="glyphicon glyphicon-time">&nbsp;2015</span></a>
  57. &nbsp;
  58. <a class="label label-default"><span class="glyphicon glyphicon-time">&nbsp;更早</span></a>
  59. </td>
  60. </tr>
  61. <tr>
  62. <td>播放数量</td>
  63. <td>
  64. <a class="label label-success"><span class="glyphicon glyphicon-arrow-down">&nbsp;从高到底</span></a>
  65. &nbsp;
  66. <a class="label label-danger"><span class="glyphicon glyphicon-arrow-up">&nbsp;从低到高</span></a>
  67. </td>
  68. </tr>
  69. <tr>
  70. <td>评论数量</td>
  71. <td>
  72. <a class="label label-success"><span class="glyphicon glyphicon-arrow-down">&nbsp;从高到底</span></a>
  73. &nbsp;
  74. <a class="label label-danger"><span class="glyphicon glyphicon-arrow-up">&nbsp;从低到高</span></a>
  75. </td>
  76. </tr>
  77. </table>
  78. </div>
  79. <div class="col-md-3">
  80. <div class="movielist text-center">
  81. <!--<img data-original="holder.js/262x166"
  82. class="img-responsive lazy center-block" alt="">-->
  83. <img src="holder.js/262x166" class="img-responsive center-block" alt="">
  84. <div class="text-left" style="margin-left:auto;margin-right:auto;width:210px;">
  85. <span style="color:#999;font-style: italic;">环太平洋</span><br>
  86. <div>
  87. <span class="glyphicon glyphicon-star" style="color:#FFD119"></span>
  88. <span class="glyphicon glyphicon-star" style="color:#FFD119"></span>
  89. <span class="glyphicon glyphicon-star" style="color:#FFD119"></span>
  90. <span class="glyphicon glyphicon-star-empty" style="color:#FFD119"></span>
  91. <span class="glyphicon glyphicon-star-empty" style="color:#FFD119"></span>
  92. </div>
  93. </div>
  94. <a href="play.html" class="btn btn-primary" target="_blank" role="button"><span class="glyphicon glyphicon-play"></span>&nbsp;播放</a>
  95. </div>
  96. </div>
  97. <div class="col-md-3">
  98. <div class="movielist text-center">
  99. <!--<img data-original="holder.js/262x166"
  100. class="img-responsive lazy center-block" alt="">-->
  101. <img src="holder.js/262x166" class="img-responsive center-block" alt="">
  102. <div class="text-left" style="margin-left:auto;margin-right:auto;width:210px;">
  103. <span style="color:#999;font-style: italic;">环太平洋</span><br>
  104. <div>
  105. <span class="glyphicon glyphicon-star" style="color:#FFD119"></span>
  106. <span class="glyphicon glyphicon-star" style="color:#FFD119"></span>
  107. <span class="glyphicon glyphicon-star" style="color:#FFD119"></span>
  108. <span class="glyphicon glyphicon-star-empty" style="color:#FFD119"></span>
  109. <span class="glyphicon glyphicon-star-empty" style="color:#FFD119"></span>
  110. </div>
  111. </div>
  112. <a href="play.html" class="btn btn-primary" target="_blank" role="button"><span class="glyphicon glyphicon-play"></span>&nbsp;播放</a>
  113. </div>
  114. </div>
  115. <div class="col-md-3">
  116. <div class="movielist text-center">
  117. <!--<img data-original="holder.js/262x166"
  118. class="img-responsive lazy center-block" alt="">-->
  119. <img src="holder.js/262x166" class="img-responsive center-block" alt="">
  120. <div class="text-left" style="margin-left:auto;margin-right:auto;width:210px;">
  121. <span style="color:#999;font-style: italic;">环太平洋</span><br>
  122. <div>
  123. <span class="glyphicon glyphicon-star" style="color:#FFD119"></span>
  124. <span class="glyphicon glyphicon-star" style="color:#FFD119"></span>
  125. <span class="glyphicon glyphicon-star" style="color:#FFD119"></span>
  126. <span class="glyphicon glyphicon-star-empty" style="color:#FFD119"></span>
  127. <span class="glyphicon glyphicon-star-empty" style="color:#FFD119"></span>
  128. </div>
  129. </div>
  130. <a href="play.html" class="btn btn-primary" target="_blank" role="button"><span class="glyphicon glyphicon-play"></span>&nbsp;播放</a>
  131. </div>
  132. </div>
  133. <div class="col-md-12">
  134. <nav aria-label="Page navigation">
  135. <ul class="pagination">
  136. <li>
  137. <a href="#" aria-label="First">
  138. <span aria-hidden="true">首页</span>
  139. </a>
  140. </li>
  141. <li>
  142. <a href="#" aria-label="Previous">
  143. <span aria-hidden="true">上一页</span>
  144. </a>
  145. </li>
  146. <li><a href="#">1&nbsp;/&nbsp;10</a></li>
  147. <li>
  148. <a href="#" aria-label="Next">
  149. <span aria-hidden="true">下一页</span>
  150. </a>
  151. </li>
  152. <li>
  153. <a href="#" aria-label="Last">
  154. <span aria-hidden="true">尾页</span>
  155. </a>
  156. </li>
  157. </ul>
  158. </nav>
  159. </div>
  160. </div>
  161. </div>
  162. </section>
  163. <!--电影列表-->
  164. {% endblock %}

浏览器访问即可看到主页面

电影搜索页面搭建

视图函数

  1. @home.route('/search/')
  2. def search():
  3. return render_template('home/search.html')

新建app/templates/home/search.html

  1. {% extends 'home/home.html' %}
  2. {% block content %}
  3. <div class="row">
  4. <div class="col-md-12">
  5. <ol class="breadcrumb" style="margin-top:6px;">
  6. <li>"xxx"有关的电影,共x部</li>
  7. </ol>
  8. </div>
  9. <div class="col-md-12">
  10. <div class="media">
  11. <div class="media-left">
  12. <a href="play.html">
  13. <img class="media-object" src="holder.js/131x83" alt="环太平洋">
  14. </a>
  15. </div>
  16. <div class="media-body">
  17. <h4 class="media-heading">环太平洋<a href="play.html" class="label label-primary pull-right"><span class="glyphicon glyphicon-play"></span>播放影片</a></h4>
  18. 该片主要讲述了人类为了抵抗怪兽的进攻,研制出了高大的机器战士与来犯怪兽进行对抗的故事。
  19. </div>
  20. </div>
  21. <div class="media">
  22. <div class="media-left">
  23. <a href="play.html">
  24. <img class="media-object" src="holder.js/131x83" alt="环太平洋">
  25. </a>
  26. </div>
  27. <div class="media-body">
  28. <h4 class="media-heading">环太平洋<a href="play.html" class="label label-primary pull-right"><span class="glyphicon glyphicon-play"></span>播放影片</a></h4>
  29. 该片主要讲述了人类为了抵抗怪兽的进攻,研制出了高大的机器战士与来犯怪兽进行对抗的故事。
  30. </div>
  31. </div>
  32. <div class="media">
  33. <div class="media-left">
  34. <a href="play.html">
  35. <img class="media-object" src="holder.js/131x83" alt="环太平洋">
  36. </a>
  37. </div>
  38. <div class="media-body">
  39. <h4 class="media-heading">环太平洋<a href="play.html" class="label label-primary pull-right"><span class="glyphicon glyphicon-play"></span>播放影片</a></h4>
  40. 该片主要讲述了人类为了抵抗怪兽的进攻,研制出了高大的机器战士与来犯怪兽进行对抗的故事。
  41. </div>
  42. </div>
  43. <div class="media">
  44. <div class="media-left">
  45. <a href="play.html">
  46. <img class="media-object" src="holder.js/131x83" alt="环太平洋">
  47. </a>
  48. </div>
  49. <div class="media-body">
  50. <h4 class="media-heading">环太平洋<a href="play.html" class="label label-primary pull-right"><span class="glyphicon glyphicon-play"></span>播放影片</a></h4>
  51. 该片主要讲述了人类为了抵抗怪兽的进攻,研制出了高大的机器战士与来犯怪兽进行对抗的故事。
  52. </div>
  53. </div>
  54. <div class="media">
  55. <div class="media-left">
  56. <a href="play.html">
  57. <img class="media-object" src="holder.js/131x83" alt="环太平洋">
  58. </a>
  59. </div>
  60. <div class="media-body">
  61. <h4 class="media-heading">环太平洋<a href="play.html" class="label label-primary pull-right"><span class="glyphicon glyphicon-play"></span>播放影片</a></h4>
  62. 该片主要讲述了人类为了抵抗怪兽的进攻,研制出了高大的机器战士与来犯怪兽进行对抗的故事。
  63. </div>
  64. </div>
  65. </div>
  66. <div class="col-md-12 text-center">
  67. <nav aria-label="Page navigation">
  68. <ul class="pagination">
  69. <li>
  70. <a href="#" aria-label="First">
  71. <span aria-hidden="true">首页</span>
  72. </a>
  73. </li>
  74. <li>
  75. <a href="#" aria-label="Previous">
  76. <span aria-hidden="true">上一页</span>
  77. </a>
  78. </li>
  79. <li><a href="#">1&nbsp;/&nbsp;10</a></li>
  80. <li>
  81. <a href="#" aria-label="Next">
  82. <span aria-hidden="true">下一页</span>
  83. </a>
  84. </li>
  85. <li>
  86. <a href="#" aria-label="Last">
  87. <span aria-hidden="true">尾页</span>
  88. </a>
  89. </li>
  90. </ul>
  91. </nav>
  92. </div>
  93. </div>
  94. {% endblock %}

修改home.htmllayout.html文件中的search链接

  1. <div class="form-group input-group">
  2. <input type="text" class="form-control" placeholder="请输入电影名!">
  3. <span class="input-group-btn">
  4. <a class="btn btn-default" href="{{ url_for('home.search') }}"><span class="glyphicon glyphicon-search"></span>&nbsp;搜索</a>
  5. </span>
  6. </div>

浏览器访问即可进行查询

电影详情页面搭建

视图函数

  1. @home.route('/play/')
  2. def play():
  3. return render_template('home/play.html')

新建app/templates/home/play.html

  1. {% extends 'home/home.html' %}
  2. {% block css %}
  3. <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='jwplayer/skins/stormtrooper.css') }}">
  4. <script>
  5. SyntaxHighlighter.all();
  6. </script>
  7. <!--播放页面-->
  8. <style>
  9. .col-lg-1, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-md-1, .col-md-10, .col-md-11, .col-md-12, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-sm-1, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-xs-1, .col-xs-10, .col-xs-11, .col-xs-12, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9{
  10. padding-right: 3px;
  11. padding-left: 3px;
  12. }
  13. </style>
  14. {% endblock %}
  15. {% block content %}
  16. <div class="row">
  17. <div class="col-md-8">
  18. <div id="moviecontainer"></div>
  19. </div>
  20. <div class="col-md-4" style="height:500px;">
  21. <div class="panel panel-info">
  22. <div class="panel-heading">
  23. <h3 class="panel-title"><span class="glyphicon glyphicon-facetime-video"></span>&nbsp;电影介绍</h3>
  24. </div>
  25. <div class="panel-body" style="height:459px;">
  26. <table class="table">
  27. <tr>
  28. <td style="width:30%;color:#ccc;font-weight:bold;font-style:italic;">
  29. <span class="glyphicon glyphicon-film"></span>&nbsp;片名
  30. </td>
  31. <td>环太平洋</td>
  32. </tr>
  33. <tr>
  34. <td style="color:#ccc;font-weight:bold;font-style:italic;">
  35. <span class="glyphicon glyphicon-tag"></span>&nbsp;标签
  36. </td>
  37. <td>科幻</td>
  38. </tr>
  39. <tr>
  40. <td style="color:#ccc;font-weight:bold;font-style:italic;">
  41. <span class="glyphicon glyphicon-time"></span>&nbsp;片长
  42. </td>
  43. <td>05:04</td>
  44. </tr>
  45. <tr>
  46. <td style="color:#ccc;font-weight:bold;font-style:italic;">
  47. <span class="glyphicon glyphicon-map-marker"></span>&nbsp;地区
  48. </td>
  49. <td>美国</td>
  50. </tr>
  51. <tr>
  52. <td style="color:#ccc;font-weight:bold;font-style:italic;">
  53. <span class="glyphicon glyphicon-star"></span>&nbsp;星级
  54. </td>
  55. <td>
  56. <div>
  57. <span class="glyphicon glyphicon-star" style="color:#FFD119"></span>
  58. <span class="glyphicon glyphicon-star" style="color:#FFD119"></span>
  59. <span class="glyphicon glyphicon-star" style="color:#FFD119"></span>
  60. <span class="glyphicon glyphicon-star-empty" style="color:#FFD119"></span>
  61. <span class="glyphicon glyphicon-star-empty" style="color:#FFD119"></span>
  62. </div>
  63. </td>
  64. </tr>
  65. <tr>
  66. <td style="color:#ccc;font-weight:bold;font-style:italic;">
  67. <span class="glyphicon glyphicon-calendar"></span>&nbsp;上映时间
  68. </td>
  69. <td>2013712日</td>
  70. </tr>
  71. <tr>
  72. <td style="color:#ccc;font-weight:bold;font-style:italic;">
  73. <span class="glyphicon glyphicon-play"></span>&nbsp;播放数量
  74. </td>
  75. <td>1000</td>
  76. </tr>
  77. <tr>
  78. <td style="color:#ccc;font-weight:bold;font-style:italic;">
  79. <span class="glyphicon glyphicon-comment"></span>&nbsp;评论数量
  80. </td>
  81. <td>1000</td>
  82. </tr>
  83. <tr>
  84. <td style="color:#ccc;font-weight:bold;font-style:italic;">
  85. <span class="glyphicon glyphicon-picture"></span>&nbsp;影片介绍
  86. </td>
  87. <td>
  88. 该片主要讲述了人类为了抵抗怪兽的进攻,研制出了高大的机器战士与来犯怪兽进行对抗的故事。
  89. </td>
  90. </tr>
  91. </table>
  92. </div>
  93. </div>
  94. </div>
  95. <div class="col-md-12" style="margin-top:6px;">
  96. <div class="panel panel-danger">
  97. <div class="panel-heading">
  98. <h3 class="panel-title"><span class="glyphicon glyphicon-comment"></span>&nbsp;电影评论</h3>
  99. </div>
  100. <div class="panel-body">
  101. <div class="alert alert-danger alert-dismissible" role="alert">
  102. <button type="button" class="close" data-dismiss="alert">
  103. <span aria-hidden="true">×</span>
  104. <span class="sr-only">Close</span>
  105. </button>
  106. <strong>请先<a href="login.html" target="_blank" class="text-info">登录</a>,才可参与评论!</strong>
  107. </div>
  108. <ol class="breadcrumb" style="margin-top:6px;">
  109. <li>全部评论(5)</li>
  110. </ol>
  111. <form role="form" style="margin-bottom:6px;">
  112. <div class="form-group">
  113. <div>
  114. <label for="input_content">内容</label>
  115. <textarea id="input_content"></textarea>
  116. </div>
  117. <div class="col-xs-12" id="error_content"></div>
  118. </div>
  119. <a class="btn btn-success" id="btn-sub"><span class="glyphicon glyphicon-edit"></span>&nbsp;提交评论</a>
  120. &nbsp;
  121. <a class="btn btn-danger" id="btn-col"><span class="glyphicon glyphicon-heart"></span>&nbsp;收藏电影</a>
  122. </form>
  123. <ul class="commentList">
  124. <li class="item cl">
  125. <a href="user.html">
  126. <i class="avatar size-L radius">
  127. <img alt="50x50" src="holder.js/50x50" class="img-circle" style="border:1px solid #abcdef;">
  128. </i>
  129. </a>
  130. <div class="comment-main">
  131. <header class="comment-header">
  132. <div class="comment-meta">
  133. <a class="comment-author" href="user.html">xiaoli</a>
  134. 评论于
  135. <time title="2016-12-07 09:12:51" datetime="2016-12-07 09:12:51">2017-03-01 09:12:51</time>
  136. </div>
  137. </header>
  138. <div class="comment-body">
  139. <p>这电影真好看!</p>
  140. </div>
  141. </div>
  142. </li>
  143. <li class="item cl">
  144. <a href="user.html">
  145. <i class="avatar size-L radius">
  146. <img alt="50x50" src="holder.js/50x50" class="img-circle" style="border:1px solid #abcdef;">
  147. </i>
  148. </a>
  149. <div class="comment-main">
  150. <header class="comment-header">
  151. <div class="comment-meta">
  152. <a class="comment-author" href="user.html">xiaoli</a>
  153. 评论于
  154. <time title="2016-12-07 09:12:51" datetime="2016-12-07 09:12:51">2017-03-01 09:12:51</time>
  155. </div>
  156. </header>
  157. <div class="comment-body">
  158. <p>这电影真好看!</p>
  159. </div>
  160. </div>
  161. </li>
  162. <li class="item cl">
  163. <a href="user.html">
  164. <i class="avatar size-L radius">
  165. <img alt="50x50" src="holder.js/50x50" class="img-circle" style="border:1px solid #abcdef;">
  166. </i>
  167. </a>
  168. <div class="comment-main">
  169. <header class="comment-header">
  170. <div class="comment-meta">
  171. <a class="comment-author" href="user.html">xiaoli</a>
  172. 评论于
  173. <time title="2016-12-07 09:12:51" datetime="2016-12-07 09:12:51">2017-03-01 09:12:51</time>
  174. </div>
  175. </header>
  176. <div class="comment-body">
  177. <p>这电影真好看!</p>
  178. </div>
  179. </div>
  180. </li>
  181. <li class="item cl">
  182. <a href="user.html">
  183. <i class="avatar size-L radius">
  184. <img alt="50x50" src="holder.js/50x50" class="img-circle" style="border:1px solid #abcdef;">
  185. </i>
  186. </a>
  187. <div class="comment-main">
  188. <header class="comment-header">
  189. <div class="comment-meta">
  190. <a class="comment-author" href="user.html">xiaoli</a>
  191. 评论于
  192. <time title="2016-12-07 09:12:51" datetime="2016-12-07 09:12:51">2017-03-01 09:12:51</time>
  193. </div>
  194. </header>
  195. <div class="comment-body">
  196. <p>这电影真好看!</p>
  197. </div>
  198. </div>
  199. </li>
  200. <li class="item cl">
  201. <a href="user.html">
  202. <i class="avatar size-L radius">
  203. <img alt="50x50" src="holder.js/50x50" class="img-circle" style="border:1px solid #abcdef;">
  204. </i>
  205. </a>
  206. <div class="comment-main">
  207. <header class="comment-header">
  208. <div class="comment-meta">
  209. <a class="comment-author" href="user.html">xiaoli</a>
  210. 评论于
  211. <time title="2016-12-07 09:12:51" datetime="2016-12-07 09:12:51">2017-03-01 09:12:51</time>
  212. </div>
  213. </header>
  214. <div class="comment-body">
  215. <p>这电影真好看!</p>
  216. </div>
  217. </div>
  218. </li>
  219. </ul>
  220. <div class="col-md-12 text-center">
  221. <nav aria-label="Page navigation">
  222. <ul class="pagination">
  223. <li>
  224. <a href="#" aria-label="First">
  225. <span aria-hidden="true">首页</span>
  226. </a>
  227. </li>
  228. <li>
  229. <a href="#" aria-label="Previous">
  230. <span aria-hidden="true">上一页</span>
  231. </a>
  232. </li>
  233. <li><a href="#">1&nbsp;/&nbsp;10</a></li>
  234. <li>
  235. <a href="#" aria-label="Next">
  236. <span aria-hidden="true">下一页</span>
  237. </a>
  238. </li>
  239. <li>
  240. <a href="#" aria-label="Last">
  241. <span aria-hidden="true">尾页</span>
  242. </a>
  243. </li>
  244. </ul>
  245. </nav>
  246. </div>
  247. </div>
  248. </div>
  249. </div>
  250. </div>
  251. {% endblock %}
  252. {% block js %}
  253. <script type="text/javascript" src="{{ url_for('static', filename='ueditor/ueditor.config.js') }}"></script>
  254. <script type="text/javascript" src="{{ url_for('static', filename='ueditor/ueditor.all.js') }}"></script>
  255. <script type="text/javascript" src="{{ url_for('static', filename='ueditor/lang/zh-cn/zh-cn.js') }}"></script>
  256. <script type="text/javascript" src="{{ url_for('static', filename='jwplayer/jwplayer.js') }}"></script>
  257. <script>
  258. var ue = UE.getEditor('input_content',{
  259. toolbars: [
  260. ['fullscreen', 'emotion', 'preview', 'link']
  261. ],
  262. initialFrameWidth:"100%",
  263. initialFrameHeight:"100",
  264. });
  265. </script>
  266. <script type="text/javascript">
  267. jwplayer.key = "P9VTqT/X6TSP4gi/hy1wy23BivBhjdzVjMeOaQ==";
  268. </script>
  269. <script type="text/javascript">
  270. jwplayer("moviecontainer").setup({
  271. flashplayer: "{{ url_for('static', filename='jwplayer/jwplayer.flash.swf') }}",
  272. playlist: [{
  273. file: "{{ url_for('static', filename='video/htpy.mp4') }}",
  274. title: "环太平洋"
  275. }],
  276. modes: [{
  277. type: "html5"
  278. }, {
  279. type: "flash",
  280. src: "{{ url_for('static', filename='jwplayer/jwplayer.flash.swf') }}"
  281. }, {
  282. type: "download"
  283. }],
  284. skin: {
  285. name: "vapor"
  286. },
  287. "playlist.position": "left",
  288. "playlist.size": 400,
  289. height: 500,
  290. width: 774,
  291. });
  292. </script>
  293. <!--播放页面-->
  294. <script>
  295. $(function() {
  296. new WOW().init();
  297. })
  298. </script>
  299. <script>
  300. $(document).ready(function() {
  301. $("img.lazy").lazyload({
  302. effect: "fadeIn"
  303. });
  304. });
  305. </script>
  306. {% endblock %}

修改其它页面的播放视频按钮链接

  1. play.html -> {{ url_for('home.play') }}

404页面搭建

视图函数,放在__init__文件中

全局404(AOP)

app/__init__.py

  1. @app.errorhandler(404)
  2. def page_not_found(err):
  3. return render_template('home/404.html'), 404

新建app/templates/home/404.html

  1. <!doctype html>
  2. <html lang="zh-cn">
  3. <head>
  4. <meta charset="utf-8">
  5. <title>消失在宇宙星空中的404页面</title>
  6. <link href="{{ url_for('static', filename='404/404.css') }}" rel="stylesheet" type="text/css">
  7. </head>
  8. <body>
  9. <!-- 代码 开始 -->
  10. <div class="fullScreen" id="fullScreen">
  11. <img class="rotating" src="{{ url_for('static', filename='404/spaceman.svg') }}">
  12. <div class="pagenotfound-text">
  13. <h1>迷失在太空中!</h1>
  14. <h2><a href="{{ url_for('home.index') }}">返回首页</a></h2>
  15. </div>
  16. <canvas id="canvas2d"></canvas>
  17. </div>
  18. <script type="text/javascript" src="{{ url_for('static', filename='404/404.js') }}"></script>
  19. <!-- 代码 结束 -->
  20. </body>
  21. </html>

浏览器随便输入一个不存在的url进行查看

Flask 构建微电影视频网站(二)的更多相关文章

  1. Python flask 构建微电影视频网站☝☝☝

    Python flask 构建微电影视频网站☝☝☝ 1.安装数据库连接依赖包 pip install flask-sqlalchemy 2.创建movie数据库 在CentOS虚拟机,进入MaridD ...

  2. Python flask 构建微电影视频网站✍✍✍

    Python flask 构建微电影视频网站  整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受,单论单个知识点课程本身没问题,大 ...

  3. Flask 构建微电影视频网站(一)

    Flask构建电影视频网站 Python MTV模型 Flask微内核 Flask扩展插件配置及使用方法 根据业务开发网站前后台功能 Flask结合MySQL数据库 你将可以独立开发网站 独立部署运维 ...

  4. Python Flask 构建微电影视频网站

    前言 学完本教程,你将掌握: 1.学会使用整形.浮点型.路径型.字符串型正则表达式路由转化器 2.学会使用post与get请求.上传文件.cookie获取与相应.404处理 3.学会适应模板自动转义. ...

  5. Flask 构建微电影视频网站(四)

    后台管理 实现后台管理系统使用flask sqlalchemy结合mysql数据库进行增删改查操作.分页的使用.路由装饰器定义.模板中变量调用.登录会话机制.上传文件.flask wtforms表单使 ...

  6. Flask 构建微电影视频网站(八)

    评论收藏及弹幕 实现电影评论添加及列表.数据查询实现统计播放量和评论量.jquery ajax实现收藏电影,flask结合redis消息队列实现电影弹幕,bug处理等功能. 电影评论-统计 class ...

  7. Flask 构建微电影视频网站(三)

    搭建后台页面 视图函数位于admin文件夹下, app/admin/views.py 管理员登录页面搭建 视图函数 @admin.route('/') def index(): return '后台主 ...

  8. Flask 构建微电影视频网站(七)

    电影模块实现 上映预告 @home.route("/animation/") def animation(): """ 首页轮播动画 "&q ...

  9. Flask 构建微电影视频网站(六)

    会员模块实现 会员注册 class RegistForm(FlaskForm): name = StringField( label="昵称", validators=[ Data ...

随机推荐

  1. 朱晔的互联网架构实践心得S1E10:数据的权衡和折腾【系列完】

    朱晔的互联网架构实践心得S1E10:数据的权衡和折腾[系列完] [下载本文PDF进行阅读] 本文站在数据的维度谈一下在架构设计中的一些方案对数据的权衡以及数据流转过程中的折腾这两个事情.最后进行系列文 ...

  2. LeetCode 965. Univalued Binary Tree

    A binary tree is univalued if every node in the tree has the same value. Return true if and only if ...

  3. Pandas基础使用

    Pandas是基于NumPy的一种工具,该工具是为了解决数据分析任务而创建的. 1.导入pandas import pandas as pd 2.pandas数据类型: 1)Series:一维数据类型 ...

  4. 1003: [ZJOI2006]物流运输 = DP+SBFA

    题意就是告诉你有n个点,e条边,m天,每天都会从起点到终点走一次最短路,但是有些点在某些时间段是不可走的,因此在某些天需要改变路径,每次改变路径的成本是K,总成本=n天运输路线长度之和+K*改变运输路 ...

  5. 【转】安装ambari的时候遇到的ambari和hadoop问题集

    5.在安装的时候遇到的问题 5.1使用ambari-server start的时候出现ERROR: Exiting with exit code -1. 5.1.1REASON: Ambari Ser ...

  6. Linux的基本解读

    Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户.多任务.支持多线程和多CPU的操作系统 而严格来讲,Linux这个词本身只表示Linux内核,但实际上人 ...

  7. Laravel 门面实例教程 —— 创建自定义 Facades 类

    我们首先创建一个需要绑定到服务容器的Test类: <?php namespace App\Facades; class Test { public function doSomething() ...

  8. python之路--线程的其他方法

    一 . current_thread的用法 import threading import time from threading import Thread, current_thread def ...

  9. 收藏一个带动画效果的ScrollViewer以及ScrollBar的模板

    这里介绍一个带动画效果的ScrollViewer和ScrollBar,总共分为两个资源字典,直接拿来引用即可: 1 ScrollBarStyle.xaml <ResourceDictionary ...

  10. 转 在PowerDesigner的PDM图形窗口中显示数据列的中文注释

    Name是名称(字段描述),Code是字段名称,Comment是注释名称,ER图中显示的是Name.一般设计时,Name跟comment都设计成描述, 而设计时候常把comment写成中文,name保 ...