编辑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…
在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…
编辑manage.py,添加测试帖子 @manager.command def create_test_post(): for x in range(1, 100): title = '标题{}'.format(x) content = '内容:{}'.format(x) board = BoardModel.query.first() author = FrontUser.query.first() post = PostModel(title=title, content=content)…
帖子加精和取消加精是在cms后台来设置的 后台逻辑 首页个帖子加精设计个模型表,编辑apps.models.py class HighlightPostModel(db.Model): __tablename__ = 'highlight_post' id = db.Column(db.Integer,primary_key=True,autoincrement=True) post_id = db.Column(db.Integer,db.ForeignKey("post.id"))…
评论后端逻辑实现 设计评论模型表, 编辑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…
先在显示的帖子是所有版块的帖子,这节我们来完成点击某个版块,则显示此版块的帖子 要完成这个功能,我们需要在前端传递板块的id到后台, 编辑front_index.html 编辑首页视图 编辑板块选中样式…
排序,我们需要在前端传递参数, 编辑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…
作为一个PHPer,在前端方面javascript.jquery这些的日常工作还搞的定.可对于div+css这些东西可就头疼了,所以现在开始学习CSS 跟着燕十八的教程开始从最基础学起,首先练习一个简单首页的布局 <html> <head> <title>首页布局</title> <style> #container { width: 1200px; background-color: blue; } #header { width: 1200p…
Flask实战 留言板 创建项目目录messageboard,从GreyLi的代码中把Pipfile和Pipfile.lock文件拷贝过来,这两个文件中定义了虚拟环境中需要安装的包的信息和位置,进入messageboard目录使用pipenv创建虚拟环境,这会同时安装所有依赖(--dev选项用来包括开发依赖), 安装完成后激活虚拟环境. 安装虚拟环境 pipenv install –dev 激活: flask shell 查看虚拟环境中安装的包: Pipfile:用来下载依赖包的 [[sourc…
首页的布局如下 因为以后所有的内容都是在main-container里面,所以这里我们修改front_base.html,把{% block body%}{% endblock%}放到里面去 <div class="main-container"> {% block body %}{% endblock %} </div> 创建static/front/css/front_base.css, 并且在front_base.html中引入它 .main-contai…
首页新品推荐的布局效果如下图: 这块布局是使用LinearLayout和GridView去实现,新建recommend_item.xml,代码如下所示: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="v…
首页秒杀布局如下图: 布局使用的是LinearLayout和RecyclerView去实现,新建seckkill_item.xml,代码如下所示: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vert…
在上一篇博客当中,我们讲了关于首页轮询广告的实现,接下来讲解一下首页频道布局的实现,如下图所示: 这个布局用的是gridview去完成的,新建一个channel_item,代码如下所示: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:or…
图解微信小程序---scroll_view实现首页排行榜布局 什么是scroll-view? 滚动视图可滚动视图区域.使用竖向滚动时,需要给scroll-view一个固定高度,通过 WXSS 设置 height.组件属性的长度单位默认为px,2.4.0起支持传入单位(rpx/px). scroll-view的基本属性 参考代码 代码笔记 第一步:在首页中增加scrool-view视图容器用于显示我们的电影榜 第二步:编写对应的js文件,显示我们的基本列表数据 第三步:编写我们的样式控制,达到特定…
发布帖子后台逻辑完成 首先给帖子设计个模型,编辑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…
# 配置ueditor上传文件到七牛UEDITOR_UPLOAD_TO_QINIU = True # 设置为True是,视为开始把图片传到七牛储存,本地不储存UEDITOR_QINIU_ACCESS_KEY = ''UEDITOR_QINIU_SECRET_KEY = ''UEDITOR_QINIU_BUCKET_NAME = '' # 空间UEDITOR_QINIU_DOMAIN = '' # 域名 调整模型,加上与用创建户的映射关系 确认两件事,1.post表内的数据为空,2.关联表的字符集…
新建一个前台页面的父模板front_base.html 导航条是总boostrap v3中文站拷贝过来的,然后根据自己的需求做一些修改 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="csrf-token" content="{{ csrf_token() }}">…
新建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…
使用Faker生成虚拟数据 创建虚拟数据是编写Web程序时的常见需求.在简单的场景下,我们可以手动创建一些虚拟数据,但更方便的选择是使用第三方库实现.流行的python虚拟数据生成工具有Mimesis和Faker,后者同时支持python2和python3,而且文档中包含丰富的示例,所以这里选用Faker.首先用pipenv安装(使用—dev选项声明为开发依赖):pipenv install faker --dev Faker内置了20多类虚拟数据,包括姓名.地址.网络账号.信用卡.时间.职位.…
cms布局 编辑 cms_boards.html {% block main_content %} <div class="top-box"> <button class="btn btn-warning" data-toggle="modal" data-target="#banner-dialog">添加新板块</button> </div> <table class=…
注册功能后端逻辑 用户注册要把注册的表单提交上来,因此,我要先对表单进行验证,编辑front.forms from apps.forms import BaseForm from wtforms import StringField from wtforms.validators import Regexp, Length, EqualTo, ValidationError from utils import xcache from .models import FrontUser class…
完成服务器权限验证之前,我们先如下页面先补上 帖子管理 {% extends 'cms/cms_base.html' %} {% block title %} 帖子管理-CMS管理系统 {% endblock %} {% block page_title %} 帖子管理 {% endblock %} {% block main_content %} 这是帖子管理页面 {% endblock %} cms_posts.html 评论管理 {% extends 'cms/cms_base.html'…
编辑cms_base.html <li><a href="#">{{ g.cms_user.username }}<span>[超级管理员]</span></a></li> 改为 <li><a href="{{ url_for('cms.profile') }}">{{ g.cms_user.username }}</a></li> <li…
修改邮箱页面布局 新建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…
这节我们继续优化,接收到返回值,我们在前端做一些处理,如:密码修改成功,弹出一个成功的提示框.这个提示框我们采用sweetalert 其中xtalert.js是对上面两个文件的一个封装,使得我们用sweetalert变得更简单,需要素材的同学点击右侧的二维码打赏10元,截图发送到邮箱463951510@qq.com吧,之前打赏过本论坛实战的就不用再打赏了哈! <!DOCTYPE html> <html lang="en"> <head> <me…
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,编写修…
cms后台登录界面 后台登录页面,我们不用自己写,只需要去Bootstrap中文网去找一个模板改一下就行 这里使用的模板是:https://v3.bootcss.com/examples/signin/ 点击右键查看网页源码,把源码复制下载 在项目templates目录下新建目录cms 在cms目录下新建文件cms_login.html,并把源码复制到该文件中 cms_login.html会用到样式文件signin.css, 点击它查看源码 在项目static目录下新建目录 cms/css 在s…
在Flask中钩子函数是使用特定的装饰器装饰的函数.为什么叫钩子函数呢?是因为钩子函数可以在正常执行的代码中,插入一段自己想要执行的代码.那么这种函数就叫做钩子函数. before_first_request 部署后处理第一次请求之前执行,当执行第二次的时候,则不会再执行此钩子函数 before_request 在每次请求之前执行.通常可以用这个装饰器来给视图函数增加一些变量,比如下面的例子 template_filter 在使用Jinja2模板时候自定义过滤器. @app.route('/')…
Local线程隔离对象 我们知道通过request可以获取表单中的数据.如果是多个用户同时在用网站,而全局request就只有一个,那么Flask是如何分辨哪用户对应哪个请求呢? 这种情况下,就会用到Local对象,只要绑定在Local对象上的属性,在每个线程中都是隔离的 我们看看,使用多线程修改值,不用local对象时,因为request是全局共享的,只要修改了它的值,就会影响到其它线程! 当我们使用Local对象绑定时,因为在每个线程中都是隔离的,所以不会影响到其它线程 总结: 1.在Fla…
cookie的基本概念 在网站中,http请求是无状态的.也就是说即使第一次和服务器连接并且登录成功后,第二次请求服务器依然不能知道当前请求的是哪个用户. cookie的出现就是为了解决这个问题,第一次登录后服务器返回一些数据库(cookie)给浏览器,然后浏览器保存在本地,当该用户发送第二次请求的时候,就会自动把上次请求存储的cookie数据自动的携带给服务器,服务器通过浏览器携带的数据就能判断当前用户是哪个了.cookie存储的数量有限,不同的浏览器有不同的存储大小,但一般不超过4kb.因此…