flask(3)

這次我們聊聊后臺(tái)頁面的搭建,后臺(tái)通常是用于管理的

后臺(tái)頁面搭建

我們類似于前臺(tái)搭建,我們搭建一個(gè)后臺(tái)管理員登錄界面
打開admin文件夾下的view.py文件
基本的語法是

@admin.route("/login/")
def login
   return render_template("admin/login.html")

@admin.route("/logout/")
def logout
   return redirect(url_for("admin.login"))

我們注意,前臺(tái)和后臺(tái)的區(qū)別是:
前臺(tái):home.route
后臺(tái):admin.route
在admin文件夾的view.py文件中

from . import admin
from flask import render_template,redirect,url_for

@admin.route("/")
def index():
   return "<h1 style='color:red'>this is admin</h1>"

@admin.route("/login/")
def login
   return render_template("admin/login.html")

@admin.route("/logout/")
def logout
   return redirect(url_for("admin.login"))

接下來我們搭建模板
在template的admin這個(gè)文件夾下建立一個(gè)login.html
一樣的,我們將link的href這個(gè)參數(shù)進(jìn)行修改

#link標(biāo)簽,修改href參數(shù)
href="{{ url_for('static' , filename = ' ')}}..+(文件路徑)
##定位到static目錄
##filename是你的圖片,或者CSS文件路徑

#script標(biāo)簽,修改src參數(shù)
src="{{ url_for('static' , filename = ' ')}}..+(文件路徑)

一些html的引用



block數(shù)據(jù)塊
include包含
extend繼承父模板
其他需要什么界面就添加什么就可以了

表單

在admin文件夾下的forms.py

from flask_wtf import FlaskForm
from wtforms import StringField,PasswordField,SubmitField

class LoginForm(FlaskFrom):
   """管理員登錄表單"""
   account = StringField(
       label="賬號(hào)"""
       validators=[DataRequired("請(qǐng)輸入賬號(hào)")],
       description='賬號(hào)',
       render_kw={
        "class":"form-control",
        "placeholder":"請(qǐng)輸入賬號(hào)!",
"required":"required"
  }
)
pwd = PasswordField(
     label = "密碼"
     validators=[
    DataRequired("密碼!")
],
description="密碼"
render_kw={
  "class":"form-control",
  "placeholder":"請(qǐng)輸入密碼!",
"required":"required"
   }
 )
submit = SubmitField(
    '登錄',
    render_kw = {
    "class": "btn btn-primary btn-block btn-flat",
  }
 ) 
)

將定義好的表單模型放到模板中
在admin的 view.py文件中

rom . import admin
from flask import render_template,redirect,url_for

@admin.route("/")
def index():
   return "<h1 style='color:red'>this is admin</h1>"

@admin.route("/login/")
def login
   return render_template("admin/login.html",form=form)

@admin.route("/logout/")
def logout
   return redirect(url_for("admin.login"))

此時(shí)在template的admin文件夾下的login.html
對(duì)form部分進(jìn)行替換
比方說input的name="text"標(biāo)簽改為{{form.accout}}
將input的name="pwd"標(biāo)簽改為{{form.pwd}}

添加表單

那么我們首先在model.py這個(gè)文件下定義一個(gè)類,作為連接

class Movie(db.Model):
  _tablename_="movie"
  id = db.Column(db.Integer,primary_key = T)
  title = db.Column(db.String(255),unique=T)
  url = db.Column(db.String(255),unique=T) 

然后依次添加需要的表格的字段
那么轉(zhuǎn)回到admin下的form.py下

class MovieForm(FlaskForm):
  title = StringField(
    label = "片名",
    validators = [
    DataRequired("請(qǐng)輸入片名!"),
    descripttion="片名",
    render_kw = {"class":"from-control",
         "id":"input_tiyle",
         "placeholder":"請(qǐng)輸入片名!"
     }
   )
     url = FileField(
     label = "文件",
     validators = [ 
     DataRequired("請(qǐng)上傳文件!")
    ],
     description = "文件",
   )

定義你要上傳的字段
此時(shí)打開admin文件夾下的view.py文件,添加

@admin.route("/movie/add/")
@admin_login_req
def movie_add():
   form = MovieForm()
   return render_template("admin/movie_add.html",form = form)

這里千萬注意對(duì)應(yīng)的html路徑
然后根據(jù)一一對(duì)應(yīng)的關(guān)系,我們找到movie_add.html進(jìn)行修改
比方說我要修改片名,那么找到label標(biāo)簽的“片名”,把它改為{{ form.title.label }}
那么label下面對(duì)應(yīng)的<input type="text">標(biāo)簽就給刪除了,改為{{ form.title }}

找到label標(biāo)簽的“文件”,把它改為{{ form.url.label }}
那么label下面對(duì)應(yīng)的<input type=file">標(biāo)簽就給刪除了,改為{{ form.url }}

接下來對(duì)上傳的電影進(jìn)行邏輯判斷
首先在movie_add.html里面,我們修改的label標(biāo)簽的“標(biāo)題”和“文件”為form格式的那一行下面({{ form.title }},{{ form.url }})分別添加{% for err in form.title.errors %}和{% for err in form.url.errors %}
以title為例

{% for err in form.title.errors %}
<div class="col-md-12">
   <font style="color:red">{{ err }}</font>
</div>
{% endfor %}

那么轉(zhuǎn)換到admin文件夾下的view.py

@admin.route("/movie/add/")
@admin_login_req
def movie_add():
     form = MovieForm()
     file_url = form.url.data.filename
     if form.validate_on_submit():
       data = form.data
       movie = Movie(
          title = data["title"],
          url = url
       )
     db.session.add(movie)
     db.session.commit()
     flash("添加電影成功!","ok")
     return redirect(url_for())
   return render_template("admin/movie_add.html",form = form)

最后在init.py里面添加文件上傳路徑
那么我們就可以通過后臺(tái)界面進(jìn)行添加電影了,即form的作用就是與后臺(tái)交互進(jìn)行查詢篩選,在返回到前端呈現(xiàn)
各個(gè)腳本功能:

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 14.g對(duì)象 專門用來存儲(chǔ)用戶信息的g對(duì)象,g的全稱的為global g對(duì)象在一次請(qǐng)求中的所有的代碼的地方,都是可...
    喬治大叔閱讀 342評(píng)論 0 3
  • 1、在根目錄下建立env文件夾,然后cd到該文件夾下pip install pipenvpipenv instal...
    SkTj閱讀 1,991評(píng)論 0 2
  • 啊,這章是表單的知識(shí),那么額首先表單就是對(duì)象給客戶端提交的表單數(shù)據(jù),比如賬號(hào)密碼什么的。我們用flask-wtf這...
    腹黑君閱讀 251評(píng)論 0 0
  • 文章分類 后臺(tái)文章分類列表頁模板導(dǎo)的詳細(xì)步驟建立數(shù)據(jù)表blog_category,并添加相應(yīng)的文章字段使用php ...
    JoyceZhao閱讀 1,870評(píng)論 0 14
  • 前端相關(guān) 展示內(nèi)容:瀏覽器接收后端返回的html文本(經(jīng)過模板渲染)內(nèi)容并在頁面展示.與用戶交互信息:js將用戶產(chǎn)...
    Knight方閱讀 2,929評(píng)論 0 1

友情鏈接更多精彩內(nèi)容