BBS论坛(二十八)
28.1.帖子分页功能完成
(1)manage.py
通过命令生成100个帖子,用于测试
@manager.command
def create_test_post():
for x in range(1,100):
title='我是标题%s'%x
content='我是内容,我的编号是%s'%x
board=BoardModel.query.first()
author=FrontUser.query.first()
post=PostModel(title=title,content=content)
post.board=board
post.author=author
db.session.add(post)
db.session.commit()
print('测试帖添加成功')
(2)front/views.py
@bp.route('/')
def index():
banners = BannerModel.query.order_by(BannerModel.priority.desc()).limit(4)
boards = BoardModel.query.all()
#获取当前页码数
page = request.args.get(get_page_parameter(), type=int, default=1)
# 显示10条帖子
start = (page - 1) * config.PER_PAGE
end = start + config.PER_PAGE
posts = PostModel.query.slice(start, end)
# bs_version=3:表示用Bootstrap v3版本
pagination = Pagination(bs_version=3,page=page,total=PostModel.query.count(),
outer_window = 0, inner_window = 2)
context = {
'banners':banners,
'boards':boards,
'posts':posts,
'pagination':pagination,
}
return render_template('front/front_index.html',**context)
(3)front_index/html
<div style="text-align: center">
{{ pagination.links }}
</div>
28.2.板块过滤功能完成
(1)front_index.html
<div class="sm-container">
<div style="margin-bottom: 10px;">
<a class="btn btn-warning btn-block" href="{{ url_for('front.apost') }}" id="add-post-btn">发布帖子</a>
</div> <div class="list-group">
{% if current_board %}
<a href="/" class="list-group-item">所有版块</a>
{% else %}
<a href="/" class="list-group-item active">所有版块</a>
{% endif %}
{% for board in boards %}
{% if board.id==current_board %}
<a href="{{ url_for('front.index',bd=board.id) }}"
class="list-group-item active">{{ board.name }}</a>
{% else %}
<a href="{{ url_for('front.index',bd=board.id) }}" class="list-group-item">{{ board.name }}</a>
{% endif %}
{% endfor %}
</div>
</div>
(2)front/views.py
@bp.route('/')
def index():
board_id = request.args.get('bd', type=int, default=None)
# 获取当前页码数
page = request.args.get(get_page_parameter(), type=int, default=1)
banners = BannerModel.query.order_by(BannerModel.priority.desc()).limit(4)
boards = BoardModel.query.all()
# 显示10条帖子
start = (page - 1) * config.PER_PAGE
end = start + config.PER_PAGE
posts = None
total = 0
if board_id:
query_obj = PostModel.query.filter_by(board_id=board_id)
posts = query_obj.slice(start,end)
total = query_obj.count()
else:
posts = PostModel.query.slice(start, end)
total = PostModel.query.count()
# bs_version=3:表示用Bootstrap v3版本
pagination = Pagination(bs_version=3,page=page,total=total,outer_window = 0, inner_window = 2)
context = {
'banners':banners,
'boards':boards,
'posts':posts,
'pagination':pagination,
'current_board':board_id #把当前板块id传到前端,前端添加“active”样式
}
return render_template('front/front_index.html',**context)
BBS论坛(二十八)的更多相关文章
- BBS论坛(十八)
18.首页轮播图实现 (1)front/css/front_base.css .main-container{ width: 990px; margin: 0 auto; overflow: hidd ...
- Bootstrap <基础二十八>列表组
列表组.列表组件用于以列表形式呈现复杂的和自定义的内容.创建一个基本的列表组的步骤如下: 向元素 <ul> 添加 class .list-group. 向 <li> 添加 cl ...
- Web 前端开发人员和设计师必读文章推荐【系列二十八】
<Web 前端开发精华文章推荐>2014年第7期(总第28期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各类能够提升网站用户体验的优秀 jQuery 插件,展示前沿的 HTML5 ...
- Citrix 服务器虚拟化之二十八 XenApp6.5发布文档内容
Citrix 服务器虚拟化之二十八 XenApp 6.5发布文档内容 XenApp可发布以下类型的资源向用户提供信息访问,这些资源可在服务器或桌面上虚拟化: 1) 服务器桌面:发布场中服务器的整个 ...
- WCF技术剖析之二十八:自己动手获取元数据[附源代码下载]
原文:WCF技术剖析之二十八:自己动手获取元数据[附源代码下载] 元数据的发布方式决定了元数据的获取行为,WCF服务元数据架构体系通过ServiceMetadataBehavior实现了基于WS-ME ...
- VMware vSphere 服务器虚拟化之二十八 桌面虚拟化之安装View传输服务器
VMware vSphere 服务器虚拟化之二十八 桌面虚拟化之安装View传输服务器 View 传输服务器用于管理和简化数据中心与在最终用户本地系统上检出使用的 View 桌面之间的数据传输.必须安 ...
- Bootstrap入门(二十八)JS插件5:工具提醒
Bootstrap入门(二十八)JS插件5:工具提醒 工具提示在使用过程中比较常见,但是实现起来有些麻烦,而bootstrap则很好地解决了这个问题. 我们来写一个简单的实例 先引入CSS文件和JS文 ...
- mysql进阶(二十八)MySQL GRANT REVOKE用法
mysql进阶(二十八)MySQL GRANT REVOKE用法 MySQL的权限系统围绕着两个概念: 认证->确定用户是否允许连接数据库服务器: 授权->确定用户是否拥有足够的权限执 ...
- JAVA之旅(二十八)——File概述,创建,删除,判断文件存在,创建文件夹,判断是否为文件/文件夹,获取信息,文件列表,文件过滤
JAVA之旅(二十八)--File概述,创建,删除,判断文件存在,创建文件夹,判断是否为文件/文件夹,获取信息,文件列表,文件过滤 我们可以继续了,今天说下File 一.File概述 文件的操作是非常 ...
- 条目二十八《正确理解由reverse_iterator的base()成员函数所产生的iterator的用法》
条目二十八<正确理解由reverse_iterator的base()成员函数所产生的iterator的用法> 迭代器的种类一共有四种,上面已经说过了.这里就不再次写出来. 这一个条目主要是 ...
随机推荐
- tensorflow优化器-【老鱼学tensorflow】
tensorflow中的优化器主要是各种求解方程的方法,我们知道求解非线性方程有各种方法,比如二分法.牛顿法.割线法等,类似的,tensorflow中的优化器也只是在求解方程时的各种方法. 比较常用的 ...
- python全栈开发day117-MongoDB,pymongo
1.MongoDB操作 使用了不存在的对象即创建该对象 1.增加: 官方不推荐写法: insert([{},{},{}]) 官方推荐写法: insertOne({}) insertMany([{},{ ...
- sublime text 3 package Install 安装失败解决方法
失败原因为官网地址被墙,导致channel_v3文件无法访问. 解决方法: 点击Preferences——>Package Settings——>Package Control——> ...
- Picnic Planning POJ - 1639(最小k度生成树)
The Contortion Brothers are a famous set of circus clowns, known worldwide for their incredible abil ...
- 硬核机器学习干货,手把手教你写KNN!
机器学习相关概念 人工智能.机器学习和深度学习的关系 在探讨算法之前,我们先来谈一谈什么是机器学习.相信大家都听说过AlphaGo:2016年3月,AlphaGo与围棋世界冠军李世石进行围棋人机大战, ...
- 多个PVSS数据点属性读写的优化处理
注:本译文出自15多年前,尚未用最新软硬件平台进行重新测试,只提供方法论层面的参考,具体性能指标不具备参考意义. 多个PVSS数据点属性读写的优化处理 本文档概述了测试三种读取和写入多个PVSS数据点 ...
- CentOS下SVN服务的启动与关闭
CentOS下SVN服务的启动与关闭 操作系统:CentOS 6.5 SVN版本:1.8.11 启动SVN服务: svnserve -d -r /home/svn /home/svn 为版本库的根 ...
- 使用Ant Design的select组件时placeholder不生效/不起作用的解决办法
先来说说使用Ant Design和Element-ui的感觉吧. 公司的项目开发中用的是vue+element-ui,使用了一通下来后,觉得element-ui虽然也有一些问题或坑,但这些小问题或坑凭 ...
- JAVA---MYSQL 基本知识点 第一部分
一 : 什么是数据库? 数据库就是数据的仓库,用来存取数据的,也是一个文件系统,但是访问这个这个文件需要通过标准的SQL语句(统一的规则), 二 : 什么是关系型数据库? 关系型数据库通常保存的 ...
- post数据时报错:远程服务器返回错误: (400) 错误的请求。
网上查了多种方法,有不少说法,报400说是传的数据格式不对,最后的结论确实是数据格式不对. Content_Type为:application/json,配的数据格式有些麻烦,特别数多层,单层还好.例 ...