摘要: 会员中心页面,如下图所示 用户登录后,修改密码页面,如下图所示 用户查看自己的评论页面,如下图所示 用户查看自己的登录日志页面,如下图所示 用户查看自己收藏的电影的页面,如下图所示 1. 定义用户主页面左侧部分 在上面的图片里,可以看到,整个页面的顶部和左侧都是一样的 在之前,已经把顶部部分单独定义 阅读全文
posted @ 2018-05-29 22:58 renpingsheng 阅读(854) 评论(0) 推荐(1) 编辑
摘要: 页面完成后的最终布局 电影视频网站首页面 会员登录页面 会员注册页面 点击退出和会员按钮,直接进入会员登录页面 视频播放页面 可以看到,页面共同的部分是顶部导航和底部导航 所以我们可以把页面顶部导航和底部导航部分单独定义一个文件home.html,然后让需要使用顶部导航和底部导航的页面都继承home 阅读全文
posted @ 2018-05-22 20:51 renpingsheng 阅读(2008) 评论(2) 推荐(3) 编辑
摘要: 1.安装数据库连接依赖包 pip install flask sqlalchemy 2.创建movie数据库 在CentOS虚拟机, create database movie 3.定义MaridDB数据库连接 在app目录下的 中添加以下内容 _ _coding:utf 8_ _ from fla 阅读全文
posted @ 2018-05-19 23:53 renpingsheng 阅读(1438) 评论(1) 推荐(0) 编辑
摘要: 1.用到的Flask知识 1.使用整形,浮点型,路径型,字符串型下正则表达式路由转化器 2.使用GET与POST请求,上传文件,cookie获取与响应,404处理 3.使用模板自动转义,定义过滤器,定义全局上下文处理器,Jinja2语法,包含,继承,定义宏 4.使用flask wtf定义表单模型,字 阅读全文
posted @ 2018-05-17 23:52 renpingsheng 阅读(2669) 评论(15) 推荐(1) 编辑
摘要: 做为python web开发领域的一员,flask跟Django在很多地方用法以都是相似的,比如flask的模板 模板就是服务器端的页面,在模板中可以使用服务端的语法进行输出控制 1.模板的工作原理 在视图函数中,通过 方法返回一个页面,然后通过Jinja2语法来进行渲染 简单来说,就是把服务器端的 阅读全文
posted @ 2018-05-14 22:32 renpingsheng 阅读(2165) 评论(0) 推荐(0) 编辑
摘要: 在使用flask定义路由完成文件上传时,定义upload视图函数 from flask import Flask, render_template from werkzeug.utils import secure_filename import os app = Flask(__name__) a 阅读全文
posted @ 2018-05-13 21:19 renpingsheng 阅读(1098) 评论(0) 推荐(0) 编辑
摘要: 当我们新建一个flask项目时,pycharm通常已经为项目定义了一个基本路由 此时在浏览器中输入地址 ,页面会显示出"Hello World!"的字样 如下图所示 那么此时在flask后台程序中,到底发生了什么事情呢?? 在上面的例子中,可以看到对hello_world视图函数被app.route 阅读全文
posted @ 2018-04-08 21:22 renpingsheng 阅读(843) 评论(0) 推荐(1) 编辑
摘要: 在flask里,我们常在主文件中定义某些配置,比如: app.debug = True app.secret_key = 'helloworld!!' 实际上,flask中默认可以进行可选的配置项有很多。 如果在开发的过程中,把所有需要的配置项都定义在主文件中,就会造成整个程序的目录结构不合理, 如 阅读全文
posted @ 2018-04-07 21:49 renpingsheng 阅读(963) 评论(0) 推荐(1) 编辑
摘要: 整个页面的文件结构如下图所示: html部分代码: <!DOCTYPE html 旋转木马轮播图 在html部分引入的myStyle.css文件部分代码 @charset "UTF 8"; blockquote,body,button,dd,dl,dt,fieldset,form,h1,h2,h3, 阅读全文
posted @ 2018-04-06 11:32 renpingsheng 阅读(572) 评论(0) 推荐(0) 编辑
摘要: 1.创建数组的三种方式: 1.1 var 数组名=[元素1,元素2,元素3...]; 例如: var arr1=[1,2,3,4]; 1.2 var 数组名=new Array(元素1,元素2,元素3...) 例如: var arr2=new Array(5,6,7,8); 1.3 通过下标的方式为 阅读全文
posted @ 2018-04-05 21:27 renpingsheng 阅读(292) 评论(0) 推荐(0) 编辑
摘要: 三元表达式 在以前,在诸如比较两个数大小的时候,通常的写法都是下面的样子 if x y: print("the max is x") else: print("the max is y") 三元表达式的语法为: True if expression else False 现在可以个体三元表达式来完成 阅读全文
posted @ 2018-03-24 23:13 renpingsheng 阅读(871) 评论(0) 推荐(1) 编辑
摘要: 先来看一个例子 def foo(): print("starting...") while True: res = yield print("res:",res) g = foo() next(g) 在上面的例子里,因为foo函数中有yield关键字,所以foo()函数的执行结果g是一个生成器,此时 阅读全文
posted @ 2018-03-23 23:45 renpingsheng 阅读(1057) 评论(0) 推荐(2) 编辑
摘要: 在前面的学习过程中,我们知道,迭代器有两个好处: 一是不依赖索引的统一的迭代方法 二是惰性计算,节省内存 但是迭代器也有自己的显著的缺点,那就是 不如按照索引取值方便 一次性,只能向后取值,不能向前取值 所以我们还需要学习另外一种对象,那已经 1.什么是生成器 如果一个函数体内部包含yield关键字 阅读全文
posted @ 2018-03-23 00:02 renpingsheng 阅读(561) 评论(0) 推荐(1) 编辑
摘要: 什么是迭代器 顾名思义,就是更新换代的意思 python中的迭代器就是根据上一个结果生成下一个结果,一直循环往复不断重复的过程 迭代器有两个特点: 1.不断重复同一个过程 2.根据上一个结果生成下一个结果 迭代器的定义 先来看两个例子 代码一: while True: cmd = input("in 阅读全文
posted @ 2018-03-07 09:14 renpingsheng 阅读(824) 评论(1) 推荐(2) 编辑
摘要: 以前用装饰器,都是定义好了装饰器后,使用 的方法写入被装饰函数的正上方 在这里,定义的装饰器都是没有参数的 在定义装饰器的函数的时候,没有在括号里定义参数,这就叫做无参装饰器 既然有无参装饰器,那么当然也就会有有参装饰器 有参装饰器的定义和使用 定义一个普通的装饰器 db_path = "db.tx 阅读全文
posted @ 2018-03-06 19:32 renpingsheng 阅读(482) 评论(0) 推荐(0) 编辑
摘要: 1.开放封闭原则 简单来说,就是 在面向对象的编程方式中,经常会定义各种函数。 一个函数的使用分为定义阶段和使用阶段,一个函数定义完成以后,可能会在很多位置被调用 这意味着如果函数的定义阶段代码被修改,受到影响的地方就会有很多,此时很容易因为一个小地方的修改而影响整套系统的崩溃, 所以对于现代程序开 阅读全文
posted @ 2018-02-10 12:09 renpingsheng 阅读(712) 评论(0) 推荐(2) 编辑
摘要: 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 阅读全文
posted @ 2018-02-09 22:26 renpingsheng 阅读(517) 评论(0) 推荐(1) 编辑
摘要: 闭包函数初探 通常我们定义函数都是这样定义的 def foo(): pass 其实在函数式编程中,函数里面还可以嵌套函数,如下面这样 此时我们调用foo函数,执行结果会是什么样子的呢?? hello world in foo 结果如上所示,只会执行foo函数的第一层函数,bar函数是不会被执行的。为 阅读全文
posted @ 2018-02-08 21:02 renpingsheng 阅读(1457) 评论(2) 推荐(4) 编辑
摘要: 首先,我们需要知道一个概念:应用程序是不能直接对电脑硬件进行操作的 在操作系统中,操作系统对外提供了文件系统,硬盘上的文件都由文件系统进行资源管理, 读写硬盘是一种硬件操作,所以我们要想进行文件操作,就必须通过文件系统这个接口来进行文件操作 因此 我们要想进行文件读写等操作,就必须先向操作系统发起系 阅读全文
posted @ 2018-01-28 18:55 renpingsheng 阅读(1524) 评论(0) 推荐(1) 编辑
摘要: 单例模式是一种常用的软件设计模式. 在单例模式的核心结构中,只包含一个被称为单例类的特殊类. 通过单例模式可以保证系统中一个类只有一个实例,而且这个实例可以轻易被外界访问,方便控制实例对象的个数以节约系统资源. 单例模式是解决一个系统中某个类的实例化对象有且只能有一个的最好解决方案. 单例模式的要点 阅读全文
posted @ 2017-11-29 21:38 renpingsheng 阅读(939) 评论(0) 推荐(0) 编辑
摘要: 1.let ES6新增了let命令,用来声明变量。它的用法类似于var,但是所声明的变量只在let命令所在的代码块内有效 新建index.html,文件内容为 { var a = 12; } console.log(a); 从console中可以打印出a的值 在ES6中,使用let声明a的值,然后再 阅读全文
posted @ 2017-11-26 00:02 renpingsheng 阅读(2353) 评论(0) 推荐(0) 编辑
摘要: 学习Django的时候知道,在Django请求的生命周期中,请求经过WSGI和中间件到达路由,不管是FBV还是CBV都会先执行View视图函数中的dispatch方法 是基于Django的API框架,REST framework采用的是CBV的请求模式. 所以在一个项目中,使用了REST frame 阅读全文
posted @ 2017-11-24 23:22 renpingsheng 阅读(1706) 评论(1) 推荐(0) 编辑
摘要: 1.REST framework版本控制的流程分析 1.1 determine_version方法的执行流程 首先,请求到达 的CBV,执行CBV中的 方法再次封装完成request后,执行 方法. 在 中的版本控制就是在 函数中调用 方法完成的 来看看源码 方法的源码: def initial(s 阅读全文
posted @ 2017-11-23 20:31 renpingsheng 阅读(778) 评论(0) 推荐(0) 编辑
摘要: `Django REST framework Django REST framework 反向生成url`的呢?? 在前面的例子中,知道在 中有6种版本控制的方式,进入任意一种版本控制的源码中, class QueryParameterVersioning(BaseVersioning): """ 阅读全文
posted @ 2017-11-22 20:25 renpingsheng 阅读(1496) 评论(0) 推荐(0) 编辑
摘要: 基于django.forms.ModelForm:与模型类绑定的Form 先定义一个ModelForm类,继承ModelForm类 from django.forms import ModelForm class MyModelForm(ModelForm): class Meta: model=m 阅读全文
posted @ 2017-11-21 19:41 renpingsheng 阅读(405) 评论(0) 推荐(0) 编辑