随笔分类 - python学习笔记
摘要:1.后台管理之电影管理 1.1 定义电影表单 在app的admin目录的forms.py文件中,定义电影表单 电影表单 class MovieForm(FlaskForm): title = StringField( label="片名", validators=[ DataRequired("请输
阅读全文
摘要:1. 后台管理登录功能实现 1.1 后台管理页面登录表单LoginForm 在app的admin目录下创建forms.py文件,用来保存admin蓝图中需要使用到的表单 from flask_wtf import FlaskForm from wtforms import StringField,
阅读全文
摘要:后台管理页面是系统管理员登录后对网站进行管理的前端页面 后台登录页面,如下图所示 管理员登录后的页面,如下图所示 管理员登录后,在右上角显示的管理员信息,如下图所示 管理员登录后,在页面中间部分的左侧显示管理菜单 管理菜单包括控制面板,标签管理,电影管理,预告管理,会员管理,评论管理,收藏管理,日志
阅读全文
摘要:会员中心页面,如下图所示 用户登录后,修改密码页面,如下图所示 用户查看自己的评论页面,如下图所示 用户查看自己的登录日志页面,如下图所示 用户查看自己收藏的电影的页面,如下图所示 1. 定义用户主页面左侧部分 在上面的图片里,可以看到,整个页面的顶部和左侧都是一样的 在之前,已经把顶部部分单独定义
阅读全文
摘要:页面完成后的最终布局 电影视频网站首页面 会员登录页面 会员注册页面 点击退出和会员按钮,直接进入会员登录页面 视频播放页面 可以看到,页面共同的部分是顶部导航和底部导航 所以我们可以把页面顶部导航和底部导航部分单独定义一个文件home.html,然后让需要使用顶部导航和底部导航的页面都继承home
阅读全文
摘要:1.安装数据库连接依赖包 pip install flask sqlalchemy 2.创建movie数据库 在CentOS虚拟机, create database movie 3.定义MaridDB数据库连接 在app目录下的 中添加以下内容 _ _coding:utf 8_ _ from fla
阅读全文
摘要:1.用到的Flask知识 1.使用整形,浮点型,路径型,字符串型下正则表达式路由转化器 2.使用GET与POST请求,上传文件,cookie获取与响应,404处理 3.使用模板自动转义,定义过滤器,定义全局上下文处理器,Jinja2语法,包含,继承,定义宏 4.使用flask wtf定义表单模型,字
阅读全文
摘要:做为python web开发领域的一员,flask跟Django在很多地方用法以都是相似的,比如flask的模板 模板就是服务器端的页面,在模板中可以使用服务端的语法进行输出控制 1.模板的工作原理 在视图函数中,通过 方法返回一个页面,然后通过Jinja2语法来进行渲染 简单来说,就是把服务器端的
阅读全文
摘要:在使用flask定义路由完成文件上传时,定义upload视图函数 from flask import Flask, render_template from werkzeug.utils import secure_filename import os app = Flask(__name__) a
阅读全文
摘要:三元表达式 在以前,在诸如比较两个数大小的时候,通常的写法都是下面的样子 if x y: print("the max is x") else: print("the max is y") 三元表达式的语法为: True if expression else False 现在可以个体三元表达式来完成
阅读全文
摘要:先来看一个例子 def foo(): print("starting...") while True: res = yield print("res:",res) g = foo() next(g) 在上面的例子里,因为foo函数中有yield关键字,所以foo()函数的执行结果g是一个生成器,此时
阅读全文
摘要:在前面的学习过程中,我们知道,迭代器有两个好处: 一是不依赖索引的统一的迭代方法 二是惰性计算,节省内存 但是迭代器也有自己的显著的缺点,那就是 不如按照索引取值方便 一次性,只能向后取值,不能向前取值 所以我们还需要学习另外一种对象,那已经 1.什么是生成器 如果一个函数体内部包含yield关键字
阅读全文
摘要:什么是迭代器 顾名思义,就是更新换代的意思 python中的迭代器就是根据上一个结果生成下一个结果,一直循环往复不断重复的过程 迭代器有两个特点: 1.不断重复同一个过程 2.根据上一个结果生成下一个结果 迭代器的定义 先来看两个例子 代码一: while True: cmd = input("in
阅读全文
摘要:以前用装饰器,都是定义好了装饰器后,使用 的方法写入被装饰函数的正上方 在这里,定义的装饰器都是没有参数的 在定义装饰器的函数的时候,没有在括号里定义参数,这就叫做无参装饰器 既然有无参装饰器,那么当然也就会有有参装饰器 有参装饰器的定义和使用 定义一个普通的装饰器 db_path = "db.tx
阅读全文
摘要:1.开放封闭原则 简单来说,就是 在面向对象的编程方式中,经常会定义各种函数。 一个函数的使用分为定义阶段和使用阶段,一个函数定义完成以后,可能会在很多位置被调用 这意味着如果函数的定义阶段代码被修改,受到影响的地方就会有很多,此时很容易因为一个小地方的修改而影响整套系统的崩溃, 所以对于现代程序开
阅读全文
摘要:1.线程的创建 1.1 通过 类直接创建 import threading import time def foo(n): time.sleep(n) print("foo func:",n) def bar(n): time.sleep(n) print("bar func:",n) s1=tim
阅读全文
摘要:闭包函数初探 通常我们定义函数都是这样定义的 def foo(): pass 其实在函数式编程中,函数里面还可以嵌套函数,如下面这样 此时我们调用foo函数,执行结果会是什么样子的呢?? hello world in foo 结果如上所示,只会执行foo函数的第一层函数,bar函数是不会被执行的。为
阅读全文
摘要:首先,我们需要知道一个概念:应用程序是不能直接对电脑硬件进行操作的 在操作系统中,操作系统对外提供了文件系统,硬盘上的文件都由文件系统进行资源管理, 读写硬盘是一种硬件操作,所以我们要想进行文件操作,就必须通过文件系统这个接口来进行文件操作 因此 我们要想进行文件读写等操作,就必须先向操作系统发起系
阅读全文
摘要:单例模式是一种常用的软件设计模式. 在单例模式的核心结构中,只包含一个被称为单例类的特殊类. 通过单例模式可以保证系统中一个类只有一个实例,而且这个实例可以轻易被外界访问,方便控制实例对象的个数以节约系统资源. 单例模式是解决一个系统中某个类的实例化对象有且只能有一个的最好解决方案. 单例模式的要点
阅读全文
摘要:学习Django的时候知道,在Django请求的生命周期中,请求经过WSGI和中间件到达路由,不管是FBV还是CBV都会先执行View视图函数中的dispatch方法 是基于Django的API框架,REST framework采用的是CBV的请求模式. 所以在一个项目中,使用了REST frame
阅读全文