這次我們聊聊后臺(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è)腳本功能:
