评论后端逻辑实现 设计评论模型表, 编辑apps.models.py class CommentModel(db.Model): __tablename__ = 'comment' id = db.Column(db.Integer,primary_key=True,autoincrement=True) content = db.Column(db.Text,nullable=False) create_time = db.Column(db.DateTime,default=datetime…
发布帖子后台逻辑完成 首先给帖子设计个模型,编辑apps.models.py class PostModel(db.Model): __tablename__ = 'post' id = db.Column(db.Integer, primary_key=True, autoincrement=True) title = db.Column(db.String(200), nullable=False) content = db.Column(db.Text, nullable=False) c…
在base页加一个登录标识符 给加页面两个id,方便取值 js $(function () { //初始化ueditor var ue = UE.getEditor('editor', { 'serverUrl': '/ueditor/upload/', // 定制uedtior工具栏按钮 "toolbars": [ [ 'undo', //撤销 'redo', //重做 'bold', //加粗 'italic', //斜体 'source', //源代码 'blockquote',…
模型 class CommentModel(db.Model): """ 评论 """ __tablename__ = 'comment' id = db.Column(db.Integer, primary_key=True, autoincrement=True) content = db.Column(db.Text, nullable=False) create_time = db.Column(db.DateTime, default=…
Flask实战 留言板 创建项目目录messageboard,从GreyLi的代码中把Pipfile和Pipfile.lock文件拷贝过来,这两个文件中定义了虚拟环境中需要安装的包的信息和位置,进入messageboard目录使用pipenv创建虚拟环境,这会同时安装所有依赖(--dev选项用来包括开发依赖), 安装完成后激活虚拟环境. 安装虚拟环境 pipenv install –dev 激活: flask shell 查看虚拟环境中安装的包: Pipfile:用来下载依赖包的 [[sourc…
0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之权限管理系统(2) 功能及实体设计 3 Asp.Net Core 项目实战之权限管理系统(3) 通过EntityFramework Core使用PostgreSQL 4 Asp.Net Core 项目实战之权限管理系统(4) 依赖注入.仓储.服务的多项目分层实现 5 Asp.Net Core 项目实…
0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之权限管理系统(2) 功能及实体设计 3 Asp.Net Core 项目实战之权限管理系统(3) 通过EntityFramework Core使用PostgreSQL 4 Asp.Net Core 项目实战之权限管理系统(4) 依赖注入.仓储.服务的多项目分层实现 5 Asp.Net Core 项目实…
我所做过的系统,分单机版系统(2005年).CS系统(2010年).实时系统(2015年),各个系统均有“延时”功能:定时调度的: 本博客说的是实时系统中的延时功能(基于Unity3D游戏引擎). 在Unity3D中,新建的脚本会默认继承MonoBehaviour,其中Update函数会被引擎自动调度,如在我的电脑上,Update函数被调用的周期为0.012s. 那么Unity3D中,仅有通过Update函数来实现延时功能吗?  还有无其他的实现呢? 怎么才能让一个界面只显示1秒之后 然后再执行…
h5.jq 移动端评论点攒功能 平时做的项目中大部分都会涉及到评论的功能,之前用angular写的项目,功能写起来很方便,但是对于一个单页来说,angular有点大材小用了,所有今天分享一个关于jq制作评论点赞的移动端展示功能. 效果如下图: 关于效果就是上图所示,现在分析一下代码的部分吧! html部分 <ul id="comments_list"> <li class="comments"> <div class="com…
1)容器访问控制 容器的访问控制,主要通过 Linux 上的 iptables防火墙来进行管理和实现. iptables是 Linux 上默认的防火墙软件,在大部分发行版中都自带. 容器访问外部网络 容器要想访问外部网络,需要本地系统的转发支持.在Linux 系统中,检查转发是否打开: root@36078e6ba58f:/opt/webapp# sysctl net.ipv4.ip_forward net.ipv4.ip_forward = 为1,说明打开了:如果为0,说明没有开启转发,则需要…
在templates/front/下创建详情页面front_pdetail.html 编辑front.views.py创建详情页的视图函数 from flask import abort ... @bp.route('/p/<post_id>/') def post_detail(post_id): post = PostModel.query.get(post_id) if not post: abort(404) return render_template('front/front_pd…
排序,我们需要在前端传递参数, 编辑front_index.html 编辑front.views.py from apps.models import HighlightPostModel from sqlalchemy.sql import func ... @bp.route('/') def index(): banners = BannerModel.query.order_by(BannerModel.priority.desc()).all() boards = BoardModel…
编辑front_index.html <div id="carousel-example-generic" class="carousel slide index-banner" data-ride="carousel"> ... <div class="post-group"> <ul class="post-group-head"> <li class=&quo…
新建cms_banners.html继承cms_base.html {% extends 'cms/cms_base.html' %} {% block title %} 轮播图管理-CMS管理系统 {% endblock %} {% block page_title %} 轮播图管理 {% endblock %} {% block main_content %} 这是轮播图管理页面 {% endblock %} cms_banners.html 编辑cms.views,配置视图 @bp.rou…
模板 personalBlog采用典型的博客布局,左侧三分之二为主体,显示文章列表.正文:右侧三分之一为边栏,显示分为类列表.社交链接等.现在的工作是将HTML文件加工为模板,并创建对应的表单类,在模板中渲染. 并非所有的页面都需要添加边栏,所以我们不能把它放到基模板中.为了避免重复和易于维护,我们把边栏部分的代码放到了局部模板_sidebar.html中.除了基模板base.html和存储宏的macros.html模板,personalBlog程序的博客前台使用的模板如下所示: index.h…
个人博客 博客是典型的CMS(Content Management system,内容管理系统),通常由两部分组成:一部分是博客前台,用来展示开放给所有用户的博客内容:另一部分是博客后台,这部分内容仅开放给博客管理员,用来对博客资源进行添加.修改和删除等操作. 在这个项目,我们会学习更高级的项目组织方式.另外,我们还会学习使用扩展Flask-Login实现用户认证,这样就可以区分请求的来源客户端的身份,然后根据不同的身份返回不同的响应. 安装和激活虚拟环境 D:\flask\personalBl…
修改邮箱页面布局 新建cms/cms_resetemail.html {% extends 'cms/cms_base.html' %} {% block title %}修改邮箱-CMS管理系统{% endblock %} {% block page_title %}个人中心>>>修改邮箱{% endblock %} {% block head %} <style> .form-container{ width: 300px; } </style> {% end…
cms后台修改密码界面布局 先创建cms_resetpwd.html页面,继承cms_base.html {% extends 'cms/cms_base.html' %} {% block title %} 修改密码-CMS管理系统 {% endblock %} {% block page_title %} 个人中心>>>修改密码 {% endblock %} {% block main_content %} 暂无 {% endblock %} 然后编辑cms.views.py,编写修…
Flask是流行的python web框架...(* ̄︶ ̄) 零基础到企业级论坛实战,人生苦短,我用python,开启FLask之旅吧... 安装开发环境 下载Python win版安装包 双击运行,选择自定义安装,勾选Add Python 3.6 to PATH 安装完成之后,进入cmd窗口,输入python即可进入python环境 这里我们使用virtualenv虚拟开发环境 为什么使用virtualenv? 1.使用不同应用开发环境独立开发 2.环境升级不影响其他应用,也不会影响全局的Py…
今天给大家分享一下微信小程序中商品列表的流式布局方式,根据文章内容操作就可以看到效果哦~~~ 流式布局概念 流式布局也叫百分比布局 把元素的宽,高,margin,padding不再用固定数值,改用百分比, 这样元素的宽,高,margin,padding会根据页面的尺寸随时 调整已达到适应当前页面的目的. 先看效果:   商品列表流式布局.gif 如上图所示,为了能够看的更直观一点我给布局设置了红色虚线边框,整体页面根据元素的百分比进行布局. 直接看代码: xxx.wxml <scroll-vie…
经常在各大论坛或新闻板块详情页面下边看到评论功能,当然不单单是直接发表评论内容那么简单,可以对别人的评论进行回复,别人又可以对你的回复再次评论或回复,如此反复,理论上可以说是没有休止,从技术角度分析很容易想到运用无限级分类技术存储数据,运用递归获取评论层级结构数据,运用ajax实现评论页面交互,这里用thinkphp框架做个简单的demo练练手,为了简化流程这里第三级评论不再提供回复功能,当然只要在这个基础上稍作修改就可以实现无限回复功能,主要是view层样式修改较麻烦,需花些时间. 一.效果需…
编写博客前台 博客前台需要开放给所有用户,这里包括显示文章列表.博客信息.文章内容和评论等功能功能. 分页显示文章列表 为了在主页显示文章列表,我们要先在渲染主页模板的index视图的数据库中获取所有文章记录并传入模板: blueprints\blog.py: from personalBlog.models import Post @blog_bp.route('/') def index(): posts = Post.query.order_by(Post, timestamp.desc(…
电子邮件支持 因为博客要支持评论,所以我们需要在文章有了新评论后发邮件通知管理员.而且,当管理员回复了读者的评论后,也需要发送邮件提醒读者. 为了方便读者使用示例程序,personalBlog中仍然使用Flask-Mail来发送邮件.读者在运行程序前需要在项目根目录内创建.env文件写入对应的环境变量,以便让发信功能正常工作. 因为邮件的内容很简单,我们将直接在发信函数中写出正文内容,这里只提供了HTML正文.我们有两个需要使用电子邮件的场景: 1.当文章有新评论时,发送邮件给管理员: 2.当某…
3.生成虚拟数据 为了方便编写程序前台和后台功能,我们在创建数据库模型后就编写生成虚拟数据的函数. 1)管理员 用于生成虚拟管理员信息的fake_admin()函数如下所示: personalBlog/fakes.py: 生成虚拟管理员信息 from personalBlog.models import Admin from personalBlog.extensions import db def fake_admin(): admin = Admin( username = 'admin',…
 获取节点的两种方式:     1.通过event对象的srcElement属性:     2.通过事件源对象用this传入.     代码如下: <html> <head>     <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">     <title>收缩菜单 · 表单布局</title>     <script…
评论在数据库中的表示 由于评论和2个模型有关系,分别是谁发了评论,以及评论了哪个文章,所以这次要更新数据库模型 models.py 创建用户评论数据库模型 class Comment(db.Model): __tablename__ = 'comments' id = db.Column(db.Integer, primary_key=True) body = db.Column(db.Text) timestamp = db.Column(db.DateTime,index=True,defa…
视图函数的返回值会被自动转换为一个响应对象,Flask的转换逻辑如下: 如果返回的是一个合法的响应对象,则直接返回 可以使用make_response函数来创建Response对象,这个方法可以设置额外的数据,比如cookie.header信息等 rom flask import Flask from flask import make_response app=Flask(__name__) @app.route('/about/') def about(): return make_resp…
GET和POST请求 在网络请求中有许多请求方式,比如GET, POST, DELETE, PUT等,最常用的就是GET和POST GET 只会在服务器上获取资源,不会更改服务器的状态,这种请求方式推荐使用GET GET请求把参数放到url中,通过’?xx=xxx‘的形式传递 POST 给服务器提交一些数据或者文件,一般POST请求是会对服务器的状态产生影响 POST请求把参数放到Form Data中 在flask的route中默认使用的是get方法,用method参数来指定某个url能够使用的…
我们之前是通过url来找到对应的视图函数 /     =>    hello_world 那么url_for则是通过视图函数找到url hello world  =>  / 演示如下 #coding=utf-8 from flask import Flask from flask import url_for app=Flask(__name__) @app.route("/") def hello_world(): return url_for('my_list') @a…
使用Flask-DebugToolbar调试程序 扩展Flask-DebugToolbar提供了一系列调试功能,可以用来查看请求的SQL语句.配置选项.资源加载情况等信息.这些信息在开发时会非常有用.首先使用pipenv安装Flask-DebugToolbar及其依赖: 然后实例化扩展提供的DebugToolExtension类,传入程序实例APP,以完成扩展的初始化: from flask immport Flask from flask_debugtoolbar import DebugTo…