1. 程式人生 > >使用Python-Flask框架開發Web網站系列課程(四)構建前端

使用Python-Flask框架開發Web網站系列課程(四)構建前端

前言

使用IDE:PyCharm

作業系統:Mac

Python的版本:3.6

我的郵箱:[email protected]

交流群:372430835

說明:

本次課程的GitHub程式碼在最下面。

本次課程基於上個課程的程式碼,如果沒看過的請先傳送:

一、構建前端專案

前端專案我們之前有用到過,就是全部放置在/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,在以下路徑下載

在/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 %}

 預覽一下,完美。

 二、程式碼地址

相關推薦

使用Python-Flask框架開發Web網站系列課程構建前端

前言 使用IDE:PyCharm 作業系統:Mac Python的版本:3.6 我的郵箱:[email protected] 交流群:372430835 說明: 本次課程的GitHub程式碼在最下面。 本次課程基於上個課程的程式碼,如果沒看過的請先傳

基於python-flask搭建後臺,HTML+CSS+JSjQuery前端web全棧開發——3.2 普通按鈕點選事件與後臺互動

    在上一篇文章,我們講解了基於外掛實現的上傳圖片到後臺處理,並將處理後得到的結果圖與原圖在前端顯示。    主要idea是將圖片先在後臺進行快取,我們傳回兩張圖片的途徑,在file的done函式中對<img/>標籤的src屬性進行更新。    但是這樣子存在

【Android開發—智慧家居系列:UDP通訊傳送指令

【Android開發—智慧家居系列】(四):UDP通訊傳送指令   思路回顧 【1】手機連線WIFI模組  【2】UDP通訊對WIFI模組傳送指令,以和WIFI模組保持連線狀態  【3】UDP通訊對WIFI模組傳送指令,讓其搜尋可用的無線網,返回WIFI列表

整合SpringMVC框架+Mybatis框架開發人力資源管理系統

利用Mybatis框架實現持久化Dao層 1、新增Mybatis支援,下載mybatis-3.2.3開發包下載地址,將mybatis-3.2.3.jar以及lib資料夾下所有的jar包引入工程,即完成了專案的Mybatis支援。 2、建立UserDao介面 Mybatis註解的使用極大的

Python flask框架圖片分享網站的總結

能力 瞭解的部分: flask框架  application   │ manage.py <-指令碼資料   │ runserver.py <-啟動伺服器   │   └─application <-w

SSM框架開發web專案系列 環境搭建篇

前言   開發環境:Eclipse Mars + Maven + JDK 1.7 + Tomcat 7 + MySQL   主要框架:Spring + Spring MVC + Mybatis   目的:快速上手搭建SSM開發環境,熟悉客戶端請求到資料庫操作的流程。

python+django簡單開發web系統系列--1

開始篇,最近跟著蟲師的視訊學習了簡單的django開發web系統,記錄下最近的學習情況(先說明一下python的版本是3.6.3,python2到2020年不再維護,建議新學的人用python3)1.環境說明:首先我的配置環境為:win10,django 2.0.4,jdk的

Spring Boot乾貨系列開發Web應用之Thymeleaf篇

 前言       Web開發是我們平時開發中至關重要的,這裡就來介紹一下Spring Boot對Web開發的支援。 正文      Spring Boot提供了spring-boot-starter-web為Web開

Flask Web開發學習之爬坑

關於第6章 電子郵件這一章把我坑了好久好久,真的是印象深刻。文章中的示例是通過 goolemail 傳送郵件,我把它換成了常用的qq郵箱。本節內容有點多,不過很多都是有用的。示例6-1需要修改app.config['MAIL_SERVER'] = 'smtp.qq.com'

《SpringBoot框架開發技術整合》筆記

文章目錄 前言 第一章 構建簡單WEB專案 第二章 SpringBoot介面返回Json 第三章 SpringBoot熱部署 第四章 SpringBoot資原始檔屬性

【Android開發—智慧家居系列:手機連線WIFI模組

【Android開發—智慧家居系列】(三):手機連線WIFI模組   概述   實現連線WIFI的功能會用到一個工具類,原始碼可以點選連結下載。網上這些類似的工具類裡的程式碼差不多是一樣的。連線無線網主要有兩個方法:    其中有一個Connect方法,還有一

【Android開發—智慧家居系列:用手機對WIFI模組進行配置

【Android開發—智慧家居系列】(二):用手機對WIFI模組進行配置   版權宣告:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/u010924834/article/details/49496729   在實際開發中,我開

利用unittest框架編寫web測試用例demo

spec arm repr follow aid content ext lin get 1、前言: 對於初學者來說,python自帶的IDLE,精簡又方便,不過一個好的編輯器能讓python編碼變得更方便,更加優美些。 不過呢,也可以自己去下載其他更好用的代碼編輯器,

前端開發框架總結之Angular實用技巧

                       前端開發框架總結之Angular實用技巧(四) 上文講了Angular中路由的相關的知識,掌握了這些,我們就可以構建比較複雜的頁面

GO語言Beego框架WEB安全小系統5跨目錄上傳檔案漏洞

跨目錄上傳檔案漏洞 攻擊原理 絕對路徑名或者相對路徑名中可能會包含檔案連結(例如:軟連結、硬連結、快捷方式、影子檔案、別名等),或者包含特殊字元(例如:.與..),這使得驗證檔案路徑變得困難;同時還有很多作業系統和檔案系統相關的命名約定,也增加了驗證檔案路

【Android開發—智慧家居系列:智慧家居原理

  ①.通過手機端APP中的配置程式,配置模組要連線的路由器的名稱(SSID)和金鑰;    ②. 將WIFI模組連線路由器,路由器通過外網連線到伺服器,如小米的伺服器。完成連線工作。    ③.手機等控制終端連線遠端伺服器,下達命令;    ④.遠端伺服器將使用者指令下發給住宅中的WiFi插座    ⑤.W

springMVC系列 spring+springMVC+hibernate 三大框架整合

         首先我們要知道Hibernate五大物件:,本例項通過深入的使用這五大物件和spring+springMVC相互結合,體會到框架的好處,提高我們的開發效率          Hibernate有五大核心介面,分別是:Session Transaction

PWA(Progressive Web App)入門系列Promise

前言 這一章說一下ES6的Promise物件。為什麼要在PWA系列的文章中講Promise呢?因為PWA中的許多技術API中都是以Promise返回的方式返回的,為了對後續章節中PWA技術API更好的理解,這裡就來說一個Promise物件。 Promise出現的背景 在Jav

Myeclipse6.5 + Maven 開發web工程詳細配置

      前面咱們說了 maven環境變數的配置以及myeclipse中maven外掛的安裝,那麼下面就說一下myeclipse + maven 搭 建web project工程!那就一步一步來看吧:      1、使用Maven建立webapp工程----原因是使用Maven時一般需要遵循一定的目錄結構,

整合SpringMVC框架+Mybatis框架開發人力資源管理系統

實現使用者管理中的查詢功能並將之呈現 系統的使用者管理功能包含使用者查詢、使用者新增、使用者刪除與使用者修改等功能。 先貼上該方法程式碼: @RequestMapping(value="/selectUser") public String selectUser(