这次我们聊聊后台页面的搭建,后台通常是用于管理的
后台页面搭建
我们类似于前台搭建,我们搭建一个后台管理员登录界面
打开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"))
我们注意,前台和后台的区别是:
前台:home.route
后台:admin.route
在admin文件夹的view.py文件中
from . import admin
from flask import render_template,redirect,url_for
@admin.route("/")
def index():
return "this is admin
"
@admin.route("/login/")
def login
return render_template("admin/login.html")
@admin.route("/logout/")
def logout
return redirect(url_for("admin.login"))
接下来我们搭建模板
在template的admin这个文件夹下建立一个login.html
一样的,我们将link的href这个参数进行修改
#link标签,修改href参数
href="{{ url_for('static' , filename = ' ')}}..+(文件路径)
##定位到static目录
##filename是你的图片,或者CSS文件路径
#script标签,修改src参数
src="{{ url_for('static' , filename = ' ')}}..+(文件路径)
一些html的引用
block数据块
include包含
extend继承父模板
其他需要什么界面就添加什么就可以了
表单
在admin文件夹下的forms.py
from flask_wtf import FlaskForm
from wtforms import StringField,PasswordField,SubmitField
class LoginForm(FlaskFrom):
"""管理员登录表单"""
account = StringField(
label="账号"""
validators=[DataRequired("请输入账号")],
description='账号',
render_kw={
"class":"form-control",
"placeholder":"请输入账号!",
"required":"required"
}
)
pwd = PasswordField(
label = "密码"
validators=[
DataRequired("密码!")
],
description="密码"
render_kw={
"class":"form-control",
"placeholder":"请输入密码!",
"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 "this is admin
"
@admin.route("/login/")
def login
return render_template("admin/login.html",form=form)
@admin.route("/logout/")
def logout
return redirect(url_for("admin.login"))
此时在template的admin文件夹下的login.html
对form部分进行替换
比方说input的name="text"标签改为{{form.accout}}
将input的name="pwd"标签改为{{form.pwd}}
添加表单
那么我们首先在model.py这个文件下定义一个类,作为连接
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)
然后依次添加需要的表格的字段
那么转回到admin下的form.py下
class MovieForm(FlaskForm):
title = StringField(
label = "片名",
validators = [
DataRequired("请输入片名!"),
descripttion="片名",
render_kw = {"class":"from-control",
"id":"input_tiyle",
"placeholder":"请输入片名!"
}
)
url = FileField(
label = "文件",
validators = [
DataRequired("请上传文件!")
],
description = "文件",
)
定义你要上传的字段
此时打开admin文件夹下的view.py文件,添加
@admin.route("/movie/add/")
@admin_login_req
def movie_add():
form = MovieForm()
return render_template("admin/movie_add.html",form = form)
这里千万注意对应的html路径
然后根据一一对应的关系,我们找到movie_add.html进行修改
比方说我要修改片名,那么找到label标签的“片名”,把它改为{{ form.title.label }}
那么label下面对应的标签就给删除了,改为{{ form.title }}
找到label标签的“文件”,把它改为{{ form.url.label }}
那么label下面对应的标签就给删除了,改为{{ form.url }}
接下来对上传的电影进行逻辑判断
首先在movie_add.html里面,我们修改的label标签的“标题”和“文件”为form格式的那一行下面({{ form.title }},{{ form.url }})分别添加{% for err in form.title.errors %}和{% for err in form.url.errors %}
以title为例
{% for err in form.title.errors %}
{{ err }}
{% endfor %}
那么转换到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里面添加文件上传路径
那么我们就可以通过后台界面进行添加电影了,即form的作用就是与后台交互进行查询筛选,在返回到前端呈现
各个脚本功能: