使用类组织配置 在实际需求中,我们往往需要不同的配置组合.例如,开发用的配置,测试用的配置,生产环境用的配置.为了能方便地在这些配置中切换,你可以把配置文件升级为包,然后为这些使用场景分别创建不同的配置文件,但是最方便的做法是在单个配置文件中使用python类来组织多个不同类别的配置. 下面的代码是personalBlog的配置文件,现在它包含一个基本配置类(BaseConfig),还有其他特定的配置类,即测试配置类(TestingConfig).开发配置类(DevelopmentConfig)…
个人博客 博客是典型的CMS(Content Management system,内容管理系统),通常由两部分组成:一部分是博客前台,用来展示开放给所有用户的博客内容:另一部分是博客后台,这部分内容仅开放给博客管理员,用来对博客资源进行添加.修改和删除等操作. 在这个项目,我们会学习更高级的项目组织方式.另外,我们还会学习使用扩展Flask-Login实现用户认证,这样就可以区分请求的来源客户端的身份,然后根据不同的身份返回不同的响应. 安装和激活虚拟环境 D:\flask\personalBl…
使用蓝本模块化程序 实例化flask提供的blueprint类就创建一个蓝本实例.像程序实例一样,我们可以为蓝本实例注册路由.错误处理函数.上下文处理函数,请求处理函数,甚至是单独的静态文件文件夹和模板文件夹.在使用上,它和程序实例也很相似.比如,蓝本实例同样拥有一个route()装饰器,可以用来注册路由,但实际上蓝本对象和程序对象却有很大的不同. 实例化Blueprint类时,除了传入构造函数的第一个参数是蓝本名称之外,创建蓝本实例和使用flask对象创建程序实例的代码基本相同.例如,下面的代…
编写博客前台 博客前台需要开放给所有用户,这里包括显示文章列表.博客信息.文章内容和评论等功能功能. 分页显示文章列表 为了在主页显示文章列表,我们要先在渲染主页模板的index视图的数据库中获取所有文章记录并传入模板: blueprints\blog.py: from personalBlog.models import Post @blog_bp.route('/') def index(): posts = Post.query.order_by(Post, timestamp.desc(…
模板 personalBlog采用典型的博客布局,左侧三分之二为主体,显示文章列表.正文:右侧三分之一为边栏,显示分为类列表.社交链接等.现在的工作是将HTML文件加工为模板,并创建对应的表单类,在模板中渲染. 并非所有的页面都需要添加边栏,所以我们不能把它放到基模板中.为了避免重复和易于维护,我们把边栏部分的代码放到了局部模板_sidebar.html中.除了基模板base.html和存储宏的macros.html模板,personalBlog程序的博客前台使用的模板如下所示: index.h…
电子邮件支持 因为博客要支持评论,所以我们需要在文章有了新评论后发邮件通知管理员.而且,当管理员回复了读者的评论后,也需要发送邮件提醒读者. 为了方便读者使用示例程序,personalBlog中仍然使用Flask-Mail来发送邮件.读者在运行程序前需要在项目根目录内创建.env文件写入对应的环境变量,以便让发信功能正常工作. 因为邮件的内容很简单,我们将直接在发信函数中写出正文内容,这里只提供了HTML正文.我们有两个需要使用电子邮件的场景: 1.当文章有新评论时,发送邮件给管理员: 2.当某…
表单 下面我们来编写所有表单类,personalBlog中主要包含下面这些表单: 登录表单: 文章表单: 评论表单: 博客设置表单: 这里仅介绍登录表单.文章表单.分类表单和评论表单,其他的表单在实现上基本相同. 删除资源也需要使用表单来实现,这里之所以没有创建表单类,是因为后面我们会介绍在实现删除操作时为表单实现CSRF保护的更方便的做法. 1.登录表单 用于登录的LoginForm表单类的实现如下所示: personalBlog/forms.py: 登录表单 from flask_wtf i…
3.生成虚拟数据 为了方便编写程序前台和后台功能,我们在创建数据库模型后就编写生成虚拟数据的函数. 1)管理员 用于生成虚拟管理员信息的fake_admin()函数如下所示: personalBlog/fakes.py: 生成虚拟管理员信息 from personalBlog.models import Admin from personalBlog.extensions import db def fake_admin(): admin = Admin( username = 'admin',…
编写程序骨架 personalBlog的功能主要分为三部分:博客前台.用户认证.博客后台,其中包含的功能点如下图所示: 数据库 personalBlog一共需要使用四张表,分别存储管理员(Admin).分类(Category),文章(Post)和评论(Comment). 1.创建数据库模型 1)管理员 如果是编写一个固定的个人博客,那么事情就要简单得多,博客的大部分固定信息(比如博客标题,页脚信息等)都可以直接写死在模板中,或是使用自定义的配置存储在配置文件中.但是我们希望编写的是一个通用的博客…
使用工厂函数创建程序实例 使用蓝本还有一个重要的好处,那就是允许使用工厂函数来创建程序实例.在OOP(Object-Oriented Programming,面向对象编程)中,工厂(factory)是指创建其他对象的对象,通常是一个返回其他类的对象的函数或方法,比如我们之前的例子中创建的WTForms验证器(函数).在personalBlog程序中,程序实例可以设计为在工厂函数中创建,这个函数返回程序实例app.按照惯例,这个函数被命名为create_app()或make_app().我们把这个…
视图函数 在上面我们创建了所有必须的模型类.模板文件和表单类.经过程序规划和设计后,我们可以创建大部分视图函数.这些视图函数暂时没有实现具体功能,仅渲染对应的模板,或是重定向到其他视图.以blog蓝本为例,如下所示: personalBlog/blueprints/blog.py: 创建视图函数 #encoding=utf-8 from flask import render_template, Blueprint blog_bp = Blueint('blog', __name__) @blo…
https://blog.csdn.net/hyman_c/article/details/53512109 一  current_app current_app代表当前的flask程序实例,使用时需要flask的程序上下文激活,我们以本专栏第一篇文章中写的test.py为例介绍下它的用法: 1.1 激活程序上下文 >>> from test import app >>> from flask import current_app >>> from f…
Vue实战狗尾草博客后台管理平台第七章 本章内容为借助模块化来阐述Vuex的进阶使用. 在复杂项目的架构中,对于数据的处理是一个非常头疼的问题.处理不当,不仅对维护增加相当的工作负担,也给开发增加巨大的压力. 在大量的实战开发过程中,狗尾草总结出来的较为友好的方式是 使用一个单独的数据管理库去管理数据. 这样不会给页面增加额外的负担.且API的调用也属于数据处理/获取的部分.因此也放在数据管理下统一管理 注:本章节内容与狗尾草博客管理平台没有任何关系,仅作为Vuex的进阶使用来分享 对模块化的简…
Vue实战狗尾草博客后台管理系统第一章 这里准备采用的技术栈为:vue全家桶+element-ui 这里因为是后台管理系统,没有做SSR的必要.所以这里就采用前后端分离来昨晚这个项目~ 项目搭建 vue init webpack gwc_manage  初始化过程中,会让我们进行一些依赖包,项目配置的基本选择.项目名称,作者信息,描述,是否安装路由,eslint,测试单元,npm/yarn. 这里不选择安装eslint和测试单元.用过的人应该知道非常酸爽. 项目初始化成功后, npm run d…
Flask搭建个人博客网站(1)—项目规划--李渣渣(lizaza.cn) 发布时间:2020-05-2413次浏览 前言 现在市面上又许多比较成熟的博客平台,例如:CSDN,博客园,新浪博客等!对于想要自己搭建的人也有许多主流的开源博客系统,如:WordPress.Z-Blog.Typecho.CMS.Ghost等. 可能是由于程序员的情节,必须完全可控才觉得安全,因此才有了自己开发博客系统的想法. 定位     轻量个人博客 层次结构 系统环境 CentOS 7 Python Flask M…
上一章节,我们介绍了Hexo的基础搭建,搭建完大家一定发现,是英文版本的,并且页面有点丑陋.这一章节,就来跟大家介绍Hexo的配置和主题的设置. 站点信息 上一章有跟大家提到过_config.yml这个文件,这个我们先称之为站点全局的配置文件,后续我们说到主题的时候,也会有一个这样的文件,暂时称它主题配置文件. 我们先来看一下全局配置文件主要有哪些内容: # Site 站点主配置 title: Hexo # 网站标题 subtitle: # 网站副标题 description: # 网站描述 k…
提交和显示博客文章 app/models.py 文章模型 class Post(db.Model): __tablename__ = 'posts' id = db.Column(db.Integer, primary_key=True) body = db.Column(db.Text) timestamp = db.Column(db.DateTime,index=True,default=datetime.utcnow) author_id=db.Column(db.Integer,db.…
对某博客的代码审计 在gitee上面找了一个个人博客项目,来进行实战代码审计,主要还是学习为主 技术菜菜,哪里错误希望师傅们指正 1.SQL注入 先了解Java Web中的数据传输流程 graph TB id1(Controller.java 处理前台发送的请求) id1-->id2(Service.java 定义接口_业务逻辑) id2-->id3(ServiceImpl.java 对接口函数进行实现) id3-->id4(Mapper.java Mapper接口) id4-->…
打算利用业余时间好好研究Python的web框架--web.py,深入剖析其实现原理,体会web.py精巧之美.但在研究源码的基础上至少得会用web.py.思前想后,没有好的Idea,于是打算开发一个csdn博客专栏下载器,界面不是很好看,还过得去吧. 效果图如下: 为了简单,下载以html格式保存. 下载我自己的博客专栏,目录列表 主界面html文件非常简单,如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN…
Vue实现狗尾草博客后台管理系统第六章 本章节内容 文章列表 文章详情 草稿箱 文章发布. 本章节内容呢,开发的很是随意哈,因为多数就是element-ui的使用,熟悉的童鞋,是可以很快完成本章节的内容的. 为啥文章模块会有这么多东西呢? 因为狗尾草想着以后,文章如果是待发布的话就需要一个地方去存放起来,一开始删除的文章呢,也将会被移入到草稿箱中,这样的话,文章就不会被随便的更改啦. 文章列表 先给大家一张效果图 是不是感觉非常轻松,一个table就可以搞定, 这里的代码呢,我就直接贴出来,因为…
本章主要内容如下: 静态资源服务器的配置.学会如何使用静态资源服务器引入静态资源.并给大家推荐一个免费可使用的oss服务器~ 页面的开发由于近期做出的更改较大.就放在下一篇中. 静态资源服务器 静态资源服务器一般我叫他oss服务器,我们一般都会将一些静态资源文件,比如图片或者其他的视频,音频文件,脚本文件等都可以进行存放.而我们在开发中也仅仅通过连接引入即可进行使用.减少了本地图片的加载.在通过CDN加速后,起响应速度也不用担心啦~ 免费的静态资源服务器体验 七牛云确实是一个挺良心的平台哈.说真…
数据库代码块 from django.db import models from django.utils import timezone from django.contrib.auth.models import User # Create your models here. class BlogArticles(models.Model): title = models.CharField(max_length=30) author = models.ForeignKey(User,rel…
本章主要内容如下: 填补上期的坑. iconfont仓库的关联,引入. 开发登录页面 填坑 上期中我们功能都已正常使用.但不知道有没有小伙伴测试过error页面,当访问地址不存在时,路由是否能正常挑战error页面. 其实是不能的,因为上期的路由配置中,对404,页面及通配符页面的auth没有关掉,导致,在没有登录的情况下,404页面是进不去的.必须先进行登录.所以这是不合适的.这里大家需要先关掉auth. router>permission.js文件中,我们在校验到没有登录的时候会跳转到登录页…
Vue实现狗尾草博客后台管理系统第三章 本章节,咱们开发管理系统侧边栏及面包屑功能. 先上一张效果图 样式呢,作者前端初审,关于设计上毫无美感可言,大家可根据自己情况设计更好看的哦~ 侧边栏 这里我们借助element的aslide侧边栏,直接使用. 在components>commons下新建Aslide.vue,Header.vue组件.分别作为我们的侧边栏和头部组件. Aslide内容,我们直接使用el-menu及相关侧边栏组件.不过要仔细阅读以下官方文档,否则使用会比较费劲. colla…
伙伴们出来啦,探讨各问题,关于项目中大量的表单,大家是怎么处理的? 本章主要内容如下:底层布局,路由配置,github仓库推送关联. 关联GitHub仓库 关联建立在github已创建账号的基础上 登录自己的Github账号 新建项目 然后根据自己的情况添加名称和描述 新建完成后,我们只需要按照提示的信息一步一步完成即可 复制命令行到项目终端,回车即可实现推送. 为了验证推送的readme.md文件我们刷新github,即可看到自己添加的readme文件已经才存在仓库之中,下来我们就需要添加项目…
什么是hexo Hexo 是一款基于node 的静态博客网站生成器作者 :tommy351是一个台湾的在校大学生...相比其他的静态网页生成器而言有着,生成静态网页最快,插件丰富(已经移植了大量Octopress插件).同其他很多轻量级博客如jekyll.octopress.jekyllbootstrap等一样,也是 使用Markdown语法进行编辑博文,关于Markdown不用怕,推荐搜索维基上面的语法示例,有中文版本http://zh.wikipedia.org/wiki/Markdown,…
今天看着csdn博客的訪客数,就想给hexo博客也加入统计訪客的插件,上次折腾了个pacman主题,中间自带的是goole的统计,easy被墙,所以就想换一个统计工具,看了好多人用的都是cnzz的站长工具,然后我也下了一个,參照着confige.yml里面的代码,对cnzz的代码进行了改动,(模仿google统计的样子),搞完之后调试一下,发现没有加入成功,又换乘了百度统计,进行相同的处理也没有成功,后来又折腾了一下,要在前面加入了几个语句就成功了: 先要在D:\hexo\themes\pacm…
本章主要讲博客的个性化,譬如站点的基本配置(语言.头像.站点图标等).安装新的Hexo主题(NexT主题)以及主题的配置. 1. 修改站点配置 打开站点配置文件 ,找到: # Site title: Hexo subtitle: description: keywords: author: John Doe language: timezone: 根据自己的需要去修改上边的配置,这些配置的注释如下: # Site # 站点标题 title: Hexo # 站点副标题 subtitle: # 站点…
本文主要介绍Windows7环境下安装并配置Anaconda+VSCode作为Python开发环境. 目录 Anaconda与包管理配 Anaconda安装 添加环境变量 Anaconda安装错误及解决 找不到Anaconda Navigator和Jupyter闪退 包管理 conda conda切换国内源 conda设置代理 conda安装包时抛出"Collecting package metadata (current_repodata.json): failed"错误 pip p…
前言 博客部署完成后,恭喜你可以发表第一篇:Hello world!但是LoveIt这么好用的主题,不配置一番可惜了. 基本功能配置 主题配置最好参考已有的配置,比如LoveIt作者写的介绍,还有主题目录下的配置文件\themes\LoveIt\exampleSite\config.toml文件. 笔者认为一些配置项解释的不够清楚,所以将网站的源码放在了Github上,仅供参考. 下面介绍其中一些配置. 双语言配置 配置后需要每篇文章存在多个语言的文件,否则会报错. 例如:content\abo…