flask(3)

这次我们聊聊后台页面的搭建,后台通常是用于管理的

后台页面搭建

我们类似于前台搭建,我们搭建一个后台管理员登录界面
打开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的作用就是与后台交互进行查询筛选,在返回到前端呈现
各个脚本功能:

你可能感兴趣的:(flask(3))