<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[bird333的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/bird333</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; bird333]]></copyright><item><title><![CDATA[Python Flasky学习_使用Flask_SQLAlchemy的asPagination类对象实现分页]]></title><link>https://blog.youkuaiyun.com/bird333/article/details/81048088</link><guid>https://blog.youkuaiyun.com/bird333/article/details/81048088</guid><author>bird333</author><pubDate>Sun, 15 Jul 2018 09:16:29 +0800</pubDate><description><![CDATA[如果，某人的博客文章比较多，在一个页面上显示全部文章，耗时长、看起来也不方便。因此分页是比较好的选择。首先，我们在测试环境中使用Forgerypy创建一些虚拟数据。依赖文件如何写，参照点击打开链接# requirements/dev.txt
Forgerypy==0.1在User类和Post类中添加生成虚拟用户和文章的方法# app/models.py
class User(Mixin,db.mo...]]></description><category></category></item><item><title><![CDATA[python程序依赖文件的创建与使用]]></title><link>https://blog.youkuaiyun.com/bird333/article/details/80957709</link><guid>https://blog.youkuaiyun.com/bird333/article/details/80957709</guid><author>bird333</author><pubDate>Sat, 14 Jul 2018 19:06:48 +0800</pubDate><description><![CDATA[一个python程序一般都要依赖于许多第三方包。如果拿到别人的python代码，里面有各种import，from * import。就需要去一个一个找这些包，再安装，而且你安装的包的版本号还与源码使用的版本号不一定相同，所以拿到这样的代码也不一定能用。因此，在写代码的时候，最好列出一个包含依赖文件的文本，告诉使用这个源码的人依赖的包是什么、包的版本是什么。一、简单的单独环境这里是指只涉及在一个环境...]]></description><category></category></item><item><title><![CDATA[Python Flask学习_用户资料系统总结]]></title><link>https://blog.youkuaiyun.com/bird333/article/details/80949070</link><guid>https://blog.youkuaiyun.com/bird333/article/details/80949070</guid><author>bird333</author><pubDate>Sun, 08 Jul 2018 09:24:17 +0800</pubDate><description><![CDATA[几乎所有的社交博客都会给用户提供用户资料页，用来展示用户个人信息。用户资料页用户自己可以访问，也可以编辑。可以访问别人的用户资料页，但是不能编辑。管理员可以访问所有人的用户资料页，也都可以编辑。一、资料信息用户资料信息在后台应是存储与数据库中的users表中，因此，在User模型中添加一些字段。# app/models.py

class User(UserMixin,db.Model):
   ...]]></description><category></category></item><item><title><![CDATA[Python Flask学习_用户角色和用户权限]]></title><link>https://blog.youkuaiyun.com/bird333/article/details/80919635</link><guid>https://blog.youkuaiyun.com/bird333/article/details/80919635</guid><author>bird333</author><pubDate>Wed, 04 Jul 2018 23:36:06 +0800</pubDate><description><![CDATA[在Web App中 ，存在和游客（匿名用户），普通用户，协管员，管理员等不同的角色，应当为不同的角色赋予不同的权限。各个用户只能在权限范围内访问页面、进行操作等。通过一个例子来说明。本例中的用户分为4中：游客、普通用户、协管员、管理员。不同的用户有着不同的权限。一、在数据库中表示不同的角色权限有这么几种：操作的权限使用8位二进制数表示，现在只用了5位，剩余的可以以后用来扩展。权限的叠加是按位与运算...]]></description><category></category></item><item><title><![CDATA[Python Flask学习_确认账户（使用电子邮件）]]></title><link>https://blog.youkuaiyun.com/bird333/article/details/80863232</link><guid>https://blog.youkuaiyun.com/bird333/article/details/80863232</guid><author>bird333</author><pubDate>Sat, 30 Jun 2018 10:59:04 +0800</pubDate><description><![CDATA[总体思路：通过itsdangerous模块根据用户的id生成令牌，通过令牌生成特定URL（内含id信息），通过Email发送给注册用户。如果用户点击URL进来，证明用户信息真实，予以注册。否则反馈错误。# app/auth/views.py

@auth.route('/register',methods=['GET','POST'])
def register():
    '''注册。数据库更...]]></description><category></category></item><item><title><![CDATA[Python Flask学习_使用flask-login实现认证蓝本 （三）]]></title><link>https://blog.youkuaiyun.com/bird333/article/details/80859733</link><guid>https://blog.youkuaiyun.com/bird333/article/details/80859733</guid><author>bird333</author><pubDate>Fri, 29 Jun 2018 19:19:18 +0800</pubDate><description><![CDATA[这篇主要讲登入登出的实现。]]></description><category></category></item><item><title><![CDATA[HTML杂记]]></title><link>https://blog.youkuaiyun.com/bird333/article/details/80859588</link><guid>https://blog.youkuaiyun.com/bird333/article/details/80859588</guid><author>bird333</author><pubDate>Fri, 29 Jun 2018 17:18:11 +0800</pubDate><description><![CDATA[一、常用标签 &amp;lt;a&amp;gt; 标签的 href 属性用于指定超链接目标的 URL。&amp;lt;div&amp;gt;	定义文档中的节。&amp;lt;ul&amp;gt;	定义无序列表。&amp;lt;p&amp;gt;	定义段落。&amp;lt;nav&amp;gt;	定义导航链接。&amp;lt;span&amp;gt;	定义文档中的节。&amp;lt;button&amp;gt;	定义按钮 (push button)。&amp;lt;li&amp;gt;	定义列表的项目。&am]]></description><category></category></item><item><title><![CDATA[Python Flask学习_使用flask-login实现认证蓝本（二）]]></title><link>https://blog.youkuaiyun.com/bird333/article/details/80858729</link><guid>https://blog.youkuaiyun.com/bird333/article/details/80858729</guid><author>bird333</author><pubDate>Fri, 29 Jun 2018 17:05:50 +0800</pubDate><description><![CDATA[在 ]]></description><category></category></item><item><title><![CDATA[Python Flask学习_使用flask-login实现认证蓝本(一）]]></title><link>https://blog.youkuaiyun.com/bird333/article/details/80852793</link><guid>https://blog.youkuaiyun.com/bird333/article/details/80852793</guid><author>bird333</author><pubDate>Fri, 29 Jun 2018 10:51:51 +0800</pubDate><description><![CDATA[蓝本可以认为是一类路由的集合。一个Web App实现多个蓝本的目的是，把不同的路由分开，便于维护。再来复习一下，创建蓝本。1、在app包下创建新package，命名为auth。2、创建蓝本对象实例# app/auth/__init__.py
from flask import Blueprint                            #引入Blueprint类

auth = Bl...]]></description><category></category></item><item><title><![CDATA[Python Flask学习_使用Werkzeug]]></title><link>https://blog.youkuaiyun.com/bird333/article/details/80836878</link><guid>https://blog.youkuaiyun.com/bird333/article/details/80836878</guid><author>bird333</author><pubDate>Thu, 28 Jun 2018 00:15:45 +0800</pubDate><description><![CDATA[# models.py

from werkzeug.security import generate_password_hash,check_password_hash
class User(db.Model):
    __tablename__ = 'users'
    id = db.Column(db.Integer, primary_key=True)                ...]]></description><category></category></item><item><title><![CDATA[Python Flask学习_使用unittest进行单元测试]]></title><link>https://blog.youkuaiyun.com/bird333/article/details/80787916</link><guid>https://blog.youkuaiyun.com/bird333/article/details/80787916</guid><author>bird333</author><pubDate>Wed, 27 Jun 2018 23:19:05 +0800</pubDate><description><![CDATA[单元测试是用来对一个模块、一个函数或者一个类来进行正确性检验的测试工作。]]></description><category></category></item><item><title><![CDATA[Python Flask学习_使用Flask-Script]]></title><link>https://blog.youkuaiyun.com/bird333/article/details/80787404</link><guid>https://blog.youkuaiyun.com/bird333/article/details/80787404</guid><author>bird333</author><pubDate>Sat, 23 Jun 2018 22:24:58 +0800</pubDate><description><![CDATA[Flask开发的Web服务器支持很多启动设置选项，但是只能在脚本中作为参数传递给app.run()函数。每次想要不同的启动方式都需要改动源码，不是很方便。Flask-Script是一个Flask扩展，为Flask程序添加了一个命令解析器。Flask-Script自带了一组常用选项，而且还支持自定义命令。一、使用pip安装# pyCharm Terminal

pip install flask-s...]]></description><category></category></item><item><title><![CDATA[Python Flask学习_使用Flask-Migrate实现数据库迁移]]></title><link>https://blog.youkuaiyun.com/bird333/article/details/80780753</link><guid>https://blog.youkuaiyun.com/bird333/article/details/80780753</guid><author>bird333</author><pubDate>Sat, 23 Jun 2018 10:07:30 +0800</pubDate><description><![CDATA[在开发过程中，有时需要 修改数据库模型，修改之后还需要更新数据库。使用SQLAlchmey更新数据库表，只能删除旧表，新建新表，数据也会丢失。因此，SQLAlchemy编写了一个迁移框架：Alembic，除了直接使用Alembic外。还可以使用Flask-Migrate集成到Flask-Scriot中，所有操作都通过Flask-Script命令完成。一、将MigrateCommand类添加到man...]]></description><category></category></item><item><title><![CDATA[Python Flask学习_使用Flask-Mail集成到WebApp中]]></title><link>https://blog.youkuaiyun.com/bird333/article/details/80758502</link><guid>https://blog.youkuaiyun.com/bird333/article/details/80758502</guid><author>bird333</author><pubDate>Thu, 21 Jun 2018 18:36:19 +0800</pubDate><description><![CDATA[python标准库中内置了邮件支持模块smtplib，但是包装了smtplib的Flask-Mail能更好的和Flask程序集成。Flask-Mail连接到SMTP（简单邮件传输协议：simple mail transfer protocol）服务器，把邮件交给这个服务器发送。一、安装和相关配置参数# pyCharm Terminal

pip install flask-mail二、在Pytho...]]></description><category></category></item><item><title><![CDATA[Python 杂记]]></title><link>https://blog.youkuaiyun.com/bird333/article/details/80732354</link><guid>https://blog.youkuaiyun.com/bird333/article/details/80732354</guid><author>bird333</author><pubDate>Tue, 19 Jun 2018 12:39:51 +0800</pubDate><description><![CDATA[1、python 中的比较：is 与 ==在 Python 中会用到对象之间比较，可以用 ==，也可以用 is 。但是它们的区别是什么呢？is 比较的是两个实例对象是不是完全相同，它们是不是同一个对象，占用的内存地址是否相同。莱布尼茨说过：“世界上没有两片完全相同的叶子”，这个is正是这样的比较，比较是不是同一片叶子（即比较的id是否相同，这id类似于人的身份证标识）。== 比较的是两个对象的内容...]]></description><category></category></item><item><title><![CDATA[Python Flask学习_使用SQLAlchemy管理数据库]]></title><link>https://blog.youkuaiyun.com/bird333/article/details/80730696</link><guid>https://blog.youkuaiyun.com/bird333/article/details/80730696</guid><author>bird333</author><pubDate>Tue, 19 Jun 2018 12:34:18 +0800</pubDate><description><![CDATA[ORM是数据库映射模型，即把针对数据库的操作（增删改查等）抽象成了编程语言中代码的操作。例如：我想在数据库表User中增加一条记录，User_Class是User表在编程语言中的模型，我不需要去数据库中使用SQL命令，而是可以直接对User_Class进行操作，对数据库的操作交由User_Class自动完成，就像Qt中的QSqlTableModel这样的类。这就是数据库映射模型。SQLAlchem...]]></description><category></category></item><item><title><![CDATA[Python Flask学习_POST/重定向/GET模式]]></title><link>https://blog.youkuaiyun.com/bird333/article/details/80726526</link><guid>https://blog.youkuaiyun.com/bird333/article/details/80726526</guid><author>bird333</author><pubDate>Mon, 18 Jun 2018 21:27:19 +0800</pubDate><description><![CDATA[问题：刷新浏览器页面时，浏览器会重新发送之前发送的最后一个请求。如果这个请求是包含表单数据的POST请求，刷新页面后会再次提交表单。浏览器会发出警告：要求在再次提交前确认。因此，最好别让Web程序把POST请求作为浏览器发送的最后一个请求。解决方法是：使用重定向作为刷新产生的POST请求的响应。重定向响应是一种响应URL（而不是HTML代码）的特殊响应，浏览器收到相应的URL，会向重定向的URL发...]]></description><category></category></item><item><title><![CDATA[Python Flask学习_使用Flask-wtf和web表单]]></title><link>https://blog.youkuaiyun.com/bird333/article/details/80722747</link><guid>https://blog.youkuaiyun.com/bird333/article/details/80722747</guid><author>bird333</author><pubDate>Mon, 18 Jun 2018 10:52:30 +0800</pubDate><description><![CDATA[HTML中的&amp;lt;form&amp;gt; 元素表示表单，表单用于收集用户输入。之前，学习使用request.form获取表单数据。但是有些任务重复单调，可以实现自动化管理，比如 ：生成表单的HTML代码、验证提交的表单数据。Flask-wtf是flask的一个扩展，可以把重复工作变得更简单。一、安装flask-wtf和跨站请求伪造保护(CSRF)#  pyCharm Terminal         ...]]></description><category></category></item><item><title><![CDATA[Python Flask学习_使用Flask-Moment]]></title><link>https://blog.youkuaiyun.com/bird333/article/details/80722395</link><guid>https://blog.youkuaiyun.com/bird333/article/details/80722395</guid><author>bird333</author><pubDate>Mon, 18 Jun 2018 09:15:17 +0800</pubDate><description><![CDATA[为了解决时间本地化的问题，解决的方法是：服务器把时间发送给Web浏览器，浏览器将时间转化为本地时间，然后再渲染模板，进行显示。moment.js是使用JavaScript开发的优秀客户端开源代码库，它可以在浏览器中渲染日期和时间 。Flask-Moment是一个Flask程序扩展，能把moment.js集成到Jinja2模板中 。一、安装和初始化Flask-moment#   pyCharm Te...]]></description><category></category></item><item><title><![CDATA[廖雪峰python实战项目_Day1]]></title><link>https://blog.youkuaiyun.com/bird333/article/details/80721528</link><guid>https://blog.youkuaiyun.com/bird333/article/details/80721528</guid><author>bird333</author><pubDate>Sun, 17 Jun 2018 23:06:56 +0800</pubDate><description><![CDATA[#! app.py

import logging;logging.basicConfig(level=logging.INFO)

import asyncio, os, json, time
from datetime import datetime

from aiohttp import web

def index(request):                           ...]]></description><category></category></item></channel></rss>