使用Python-Flask框架开发Web网站系列课程(四)构建前端

简介: 版权声明:如需转载,请注明转载地址。 https://blog.csdn.net/oJohnny123/article/details/81988424 前言使用IDE:PyCharm操作系统:MacPython的版本:3.6我的邮箱:51263921@qq.com交流群:372430835说明:本次课程的GitHub代码在最下面。
版权声明:如需转载,请注明转载地址。 https://blog.csdn.net/oJohnny123/article/details/81988424

前言


使用IDE:PyCharm

操作系统:Mac

Python的版本:3.6

我的邮箱:51263921@qq.com

交流群:372430835

说明:

本次课程的GitHub代码在最下面。

本次课程基于上个课程的代码,如果没看过的请先传送:

使用Python的瓶框架开发的Web网站系列课程(一)构建项目

使用Python的瓶框架开发的Web网站系列课程(二)注册功能

使用Python-Flask框架开发Web网站系列课程(三)登录功能

 

一、构建前端项目


前端项目我们之前有用到过,就是全部放置在/myproject/frontend文件夹下。其中static放置js和css文件。base文件夹放置通用的页面,如侧边栏,顶部导航条等。

 

1.1  创建前端文件夹及文件

1.1.1创建文件夹

全路径:/myproject/frontend/base

全路径: /myproject/frontend/static/js

 

1.1.2 添加以下js或html文件

新增文件inspinia.js,在以下路径下载

https://github.com/lyy8510a/myproject/blob/master/frontend/static/js/inspinia.js

 

在/myproject/frontend/base新增_head.html

<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="https://cdn.bootcss.com/bootstrap/3.3.6/css/bootstrap.css" rel="stylesheet">
<link href="https://cdn.bootcss.com/font-awesome/4.3.0/css/font-awesome.css" rel="stylesheet">
<link href="https://cdn.bootcss.com/animate.css/3.5.2/animate.css" rel="stylesheet">
<link href="../static/css/style.css" rel="stylesheet">
<link href="https://cdn.bootcss.com/metisMenu/2.0.2/metisMenu.css" rel="stylesheet">


<!-- Mainly scripts -->
<script src="https://cdn.bootcss.com/jquery/2.1.1/jquery.js"></script>
<script src="https://cdn.bootcss.com/bootstrap/3.3.6/js/bootstrap.js"></script>
<script src="https://cdn.bootcss.com/jqueryui/1.10.4/jquery-ui.js"></script>
<script src="https://cdn.bootcss.com/metisMenu/2.0.2/metisMenu.js"></script>
<script src="https://cdn.bootcss.com/jQuery-slimScroll/1.3.6/jquery.slimscroll.js"></script>
<script src="https://cdn.bootcss.com/pace/1.0.2/pace.js"></script>
<script src="../static/js/inspinia.js"></script>

在/myproject/frontend/base新增_sidebar.html

<nav class="navbar-default navbar-static-side" role="navigation">
        <div class="sidebar-collapse">
            <ul class="nav metismenu" id="side-menu">
                <li class="nav-header">
                    <div class="dropdown profile-element">

                        <a data-toggle="dropdown" class="dropdown-toggle" href="#">
                            <span class="clear">
                                <span class="block m-t-xs">
                                    <strong class="font-bold">{{PROJECTNAME}}</strong>
                                </span>
                            </span>
                        </a>

                    </div>
                    <div class="logo-element">
                        IN+
                    </div>
                </li>


                <li class="active">
                    <a href="grid_options.html"><i class="fa fa-th-large"></i> <span class="nav-label">开始</span></a>
                </li>



                <li>
                    <a href="#"><i class="fa fa-sitemap"></i> <span class="nav-label">Menu Levels </span><span class="fa arrow"></span></a>
                    <ul class="nav nav-second-level collapse">
                        <li>
                            <a href="#">Third Level <span class="fa arrow"></span></a>
                            <ul class="nav nav-third-level">
                                <li>
                                    <a href="#">Third Level Item</a>
                                </li>
                                <li>
                                    <a href="#">Third Level Item</a>
                                </li>
                                <li>
                                    <a href="#">Third Level Item</a>
                                </li>

                            </ul>
                        </li>
                        <li><a href="#">Second Level Item</a></li>
                        <li>
                            <a href="#">Second Level Item</a></li>
                        <li>
                            <a href="#">Second Level Item</a></li>
                    </ul>
                </li>

            </ul>

        </div>
    </nav>

在/myproject/frontend/base新增_navbar.html

这里利用current_user的判断是否登录的方法,如果已登录则显示登出,未登录则显示登录的链接。

<div class="row border-bottom">
    <nav class="navbar navbar-static-top white-bg" role="navigation" style="margin-bottom: 0">
        <div class="navbar-header">
            <a class="navbar-minimalize minimalize-styl-2 btn btn-primary " href="#"><i class="fa fa-bars"></i> </a>
            <form role="search" class="navbar-form-custom" action="" method="post">
                <div class="form-group">
                    <input type="text" placeholder="Search for something..." class="form-control" name="top-search" id="top-search">
                </div>
            </form>
        </div>
        <ul class="nav navbar-top-links navbar-right">
            {% if current_user.is_authenticated %}
                <li>
                    <span class="m-r-sm text-muted welcome-message">欢迎使用myproject,{{current_user.username}}</span>
                </li>

                <li>
                    <a href="/account/logout">
                        <i class="fa fa-sign-out"></i> Log out
                    </a>
                </li>
            {% else %}

                <li>
                     <a href="/account/login">
                        <i class="fa fa-sign-out"></i> 请登录
                    </a>
                </li>

            {% endif %}
        </ul>
    </nav>
</div>

在/myproject/frontend/base新增layout.html 

这个是前端总模版,里面引入了_head.html , _sidebar.html, _navbar.html 。并留了一个block content 。以后我们新增的页面,只要套用下面代码段2即可。

<!DOCTYPE html>
<html>

<head>
    <!--第四课内容 这里是页面浏览器tab的标题-->
    <title>{{PROJECTNAME}}</title>
   {% include 'base/_head.html' %}
</head>

<body>
    <div id="wrapper">
        {% include 'base/_sidebar.html' %}
        <div id="page-wrapper" class="gray-bg">
            {% include 'base/_navbar.html' %}
            {% block content %}{% endblock %}
        </div>
    </div>
</body>
</html>




<!--{% with messages = get_flashed_messages() %}-->
  <!--{% if messages %}-->
    <!--<ul class=flashes>-->
    <!--{% for message in messages %}-->
      <!--<li>{{ message }}</li>-->
    <!--{% endfor %}-->
    <!--</ul>-->
  <!--{% endif %}-->
<!--{% endwith %}-->

代码段二: 

<!--第四课内容 -->
{% extends 'base/layout.html' %}

<!--第四课内容 下面是正文-->
{% block content %}
    <!--第四课内容 新页面的内容-->
{% endblock %}

在/myproject/frontend/base 修改 index.html

新首页内容

<!--第四课内容 -->
{% extends 'base/layout.html' %}

<!--第四课内容 下面是正文-->
{% block content %}
    <div class="wrapper wrapper-content">
        <div class="row">
            <div class="col-lg-12">
                <div class="ibox float-e-margins">
                    <div class="ibox-title">
                        <h5>Title</h5>
                    </div>
                    <div class="ibox-content">
                        <div class="row">

                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
{% endblock %}

 预览一下,完美。

 

 二、代码地址


github地址:https://github.com/lyy8510a/myproject/releases/tag/v4

目录
相关文章
|
1月前
|
数据采集 前端开发 JavaScript
Python爬虫如何应对网站的反爬加密策略?
Python爬虫如何应对网站的反爬加密策略?
|
16天前
|
Web App开发 前端开发 JavaScript
鸿蒙5开发宝藏案例分享---Web适配一多开发实践
这是一份实用的鸿蒙Web多设备适配开发指南,针对开发者在不同屏幕尺寸下的布局难题提供了解决方案。文章通过三大法宝(相对单位、媒体查询和窗口监听)详细介绍如何实现智能适配,并提供了多个实战案例,如宫格布局、对话框变形和自适应轮播图等。此外,还分享了调试技巧及工具推荐,帮助开发者快速上手并优化性能。最后鼓励读者实践探索,并提示更多官方资源等待发现。
|
2月前
|
前端开发 JavaScript 关系型数据库
基于python的租房网站-房屋出租租赁系统(python+django+vue)源码+运行
该项目是基于python/django/vue开发的房屋租赁系统/租房平台,作为本学期的课程作业作品。欢迎大家提出宝贵建议。
90 6
|
3月前
|
关系型数据库 MySQL 数据库
基于Flink CDC 开发,支持Web-UI的实时KingBase 连接器,三大模式无缝切换,效率翻倍!
TIS 是一款基于Web-UI的开源大数据集成工具,通过与人大金仓Kingbase的深度整合,提供高效、灵活的实时数据集成方案。它支持增量数据监听和实时写入,兼容MySQL、PostgreSQL和Oracle模式,无需编写复杂脚本,操作简单直观,特别适合非专业开发人员使用。TIS率先实现了Kingbase CDC连接器的整合,成为业界首个开箱即用的Kingbase CDC数据同步解决方案,助力企业数字化转型。
506 5
基于Flink CDC 开发,支持Web-UI的实时KingBase 连接器,三大模式无缝切换,效率翻倍!
|
3月前
|
数据采集 JavaScript Python
如何根据目标网站调整Python爬虫的延迟时间?
如何根据目标网站调整Python爬虫的延迟时间?
|
8月前
|
存储 人工智能 前端开发
前端大模型应用笔记(三):Vue3+Antdv+transformers+本地模型实现浏览器端侧增强搜索
本文介绍了一个纯前端实现的增强列表搜索应用,通过使用Transformer模型,实现了更智能的搜索功能,如使用“番茄”可以搜索到“西红柿”。项目基于Vue3和Ant Design Vue,使用了Xenova的bge-base-zh-v1.5模型。文章详细介绍了从环境搭建、数据准备到具体实现的全过程,并展示了实际效果和待改进点。
610 14
|
8月前
|
JavaScript 前端开发 程序员
前端学习笔记——node.js
前端学习笔记——node.js
130 0
|
8月前
|
人工智能 自然语言处理 运维
前端大模型应用笔记(一):两个指令反过来说大模型就理解不了啦?或许该让第三者插足啦 -通过引入中间LLM预处理用户输入以提高多任务处理能力
本文探讨了在多任务处理场景下,自然语言指令解析的困境及解决方案。通过增加一个LLM解析层,将复杂的指令拆解为多个明确的步骤,明确操作类型与对象识别,处理任务依赖关系,并将自然语言转化为具体的工具命令,从而提高指令解析的准确性和执行效率。
228 6
|
8月前
|
存储 弹性计算 算法
前端大模型应用笔记(四):如何在资源受限例如1核和1G内存的端侧或ECS上运行一个合适的向量存储库及如何优化
本文探讨了在资源受限的嵌入式设备(如1核处理器和1GB内存)上实现高效向量存储和检索的方法,旨在支持端侧大模型应用。文章分析了Annoy、HNSWLib、NMSLib、FLANN、VP-Trees和Lshbox等向量存储库的特点与适用场景,推荐Annoy作为多数情况下的首选方案,并提出了数据预处理、索引优化、查询优化等策略以提升性能。通过这些方法,即使在资源受限的环境中也能实现高效的向量检索。
278 1
|
8月前
|
机器学习/深度学习 弹性计算 自然语言处理
前端大模型应用笔记(二):最新llama3.2小参数版本1B的古董机测试 - 支持128K上下文,表现优异,和移动端更配
llama3.1支持128K上下文,6万字+输入,适用于多种场景。模型能力超出预期,但处理中文时需加中英翻译。测试显示,其英文支持较好,中文则需改进。llama3.2 1B参数量小,适合移动端和资源受限环境,可在阿里云2vCPU和4G ECS上运行。
371 1

推荐镜像

更多