评论列表显示及排序,个人中心显示

1.显示所有评论
{% for foo in ques.comments %}

 

2.所有评论排序
uquestion = db.relationship('Question', backref=db.backref('comments', order_by=creat_time.desc))

 

3.显示评论条数
{{ ques.comments|length }}


1题代码如下:

<h3>评论区:({{ ques.comments|length }})
</h3><br><div class="basic_box" style="padding-bottom: 50px;"><ul class="list-group" style="margin-bottom: 10px">{% for qu in ques.comments %}<li class="list-group-item" style="width: 800px"><a class="wrap-img" href="#" target="_blank"><img src="{{ qu.author.image }}" width="50px"></a><span class="glyphicon glyphicon-left" aria-hidden="true"></span><br><a href="{{ url_for('person',user_id=qu.author.id) }}">{{ qu.author.username }}</a><span class="badge">评论时间:{{ qu.creat_time }}</span><p style="">{{ qu.detail }}</p></li>{% endfor %}</ul>

2题代码

#进入每篇文章详情页
@app.route('/detail/<question_id>',methods=['GET','POST'])def detail(question_id):quest=Question.query.filter(Question.id==question_id).first()context={'comments':Comment.query.filter(Comment.question_id==question_id).order_by('-creat_time').all()}return render_template('detail.html',**context,ques=quest)

运行结果:

 

 

 

 

4.完成个人中心

1.个人中心的页面布局(html文件及相应的样式文件)

html文件如下:

{% extends 'basic.html' %}
{% block title %} 个人中心{% endblock %}{% block aa %}<div class="container"><div class="row clearfix"><div class="col-md-2 column"></div><div class="col-md-6 column"><h1><img src="{{ img }}" width="50px">{{usern }}</h1><br>全部问答<div class="basic_box" style="padding-bottom: 50px;"><ul class="list-group">{% for qu in ques %}<li class="list-group-item" style="width: 800px"><a class="wrap-img" href="#" target="_blank"><img src="{{ qu.author.image }}" width="50px"></a><span class="glyphicon glyphicon-left" aria-hidden="true"></span><a href="{{ url_for('person',user_id=qu.author.id) }}" target="_blank">{{ qu.author.username }}</a><br><a href="{{ url_for('detail',question_id=qu.id) }}">{{qu.title }}</a><br><span class="badge">发布时间:{{ qu.creat_time }}</span><p style="">{{ qu.detail }}</p></li>{% endfor %}</ul>
</div><h1><img src="{{ img }}" width="50px">{{usern }}</h1><br>全部评论<div class="basic_box" style="padding-bottom: 50px;"><ul class="list-group" style="margin-bottom: 10px">{% for qu in users %}<li class="list-group-item" style="width: 800px"><a class="wrap-img" href="#" target="_blank"><img src="{{ qu.author.image }}" width="50px"></a><span class="glyphicon glyphicon-left" aria-hidden="true"></span><br><a href="#">{{ qu.author.username }}</a><span class="badge">评论时间:{{ qu.creat_time }}</span><p style="">{{ qu.detail }}</p></li>{% endfor %}</ul>
<br>
<br>
<h1><img src="{{ img }}" width="50px">{{usern }}</h1><br>个人信息<div class="basic_box" style="padding-bottom: 50px;"><ul class="list-group" style="margin-bottom: 10px">
{#      {% for qu in users %}#}<li class="list-group-item" style="width: 800px"> 用户:{{ usern }}</li><li class="list-group-item" style="width: 800px"> 编号:{{ id }}</li><li class="list-group-item" style="width: 800px"> 问答数:{{ ques|length }}</li><li class="list-group-item" style="width: 800px"> 评论数:{{ comment|length }}</li>{#      {% endfor %}#}</ul></div><div class="col-md-4 column"></div></div>
</div></div></div>{% endblock %}

 

 

 

2.定义视图函数def usercenter(user_id):

# 个人中心
@app.route('/person/<user_id>',methods=['GET','POST'])
def person(user_id):user = User.query.filter(User.id == user_id).first()context = {'img':user.image,'id':user_id,'usern':user.username,'ques': Question.query.filter(Question.author_id == user_id).order_by('-creat_time').all(),'users': Comment.query.filter(Comment.author_id == user_id).order_by('-creat_time').all(),'comment': user.comments}return render_template('person.html', **context)

 

3.向前端页面传递参数

  context = {'img':user.image,'id':user_id,'usern':user.username,'ques': Question.query.filter(Question.author_id == user_id).order_by('-creat_time').all(),'users': Comment.query.filter(Comment.author_id == user_id).order_by('-creat_time').all(),'comment': user.comments}
<h1><img src="{{ img }}" width="50px">{{usern }}</h1><br>全部问答<h1><img src="{{ img }}" width="50px">{{usern }}</h1><br>全部评论<li class="list-group-item" style="width: 800px"> 用户:{{ usern }}</li><li class="list-group-item" style="width: 800px"> 编号:{{ id }}</li><li class="list-group-item" style="width: 800px"> 问答数:{{ ques|length }}</li><li class="list-group-item" style="width: 800px"> 评论数:{{ comment|length }}</li>

 

4.页面显示相应数据

发布的全部问答

发布的全部评论

个人信息

效果如下:

 

5.各个页面链接到个人中心

导航栏的昵称连接:

 {% if username %}<li><a href="{{ url_for('person',user_id=user.id) }}"><h2>{{ username }}</h2></a></li><li><a href="{{ url_for('logout') }}"><h2>注销</h2></a></li>{% else %}<li><a href="{{ url_for('login') }}"><h2>登录</h2></a></li><li><a href="{{ url_for('zhuce') }}"><h2>注册</h2></a></li>{% endif %}<li><a href="{{ url_for('question') }}"><h2>问答</h2></a></li>
</ul>

主页昵称连接:

  <a href="{{ url_for('person',user_id=foo.author.id) }}" target="_blank">{{ foo.author.username }}</a>

评论列表里面的昵称连接:

                <a href="{{ url_for('person',user_id=qu.author.id) }}">{{ qu.author.username }}</a>

文章中作者名字连接:

   作者:<a href="{{ url_for('person',user_id=ques.author.id) }}">{{ ques.author.username }}</a>

 

转载于:https://www.cnblogs.com/decadeyu/p/8029488.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/281635.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

他俩都曾是技术大牛,创业这些年来有怎样的苦与乐?

这是头哥侃码的第263篇原创国庆假期回来&#xff0c;「头哥唠 B 唠」的直播仍在继续。这次我邀请了我工作上的老板和朋友&#xff0c;一起聊了聊关于 “技术创业路上的苦与乐”。熟悉他们两位的都知道&#xff0c;可以说是技术出身&#xff0c;然后创业当老板的代表。大家都知道…

maven,gradle本地缓存位置

gradle: 配置系统环境变量GRADLE_USER_HOME即可&#xff0c;值为缓存位置。 maven: 修改settings文件&#xff1a;maven的home路径下的conf文件夹下的settings.xml 对于有些IDEA&#xff0c;还需要配置。但是不要再打开项目后的FILE-->settings配置&#xff0c;而是需要在选…

客户端嵌套 Web 页面如何选择

客户端嵌套 Web 页面如何选择客户端嵌套 Web 页面如何选择作者&#xff1a;驚鏵在使用客户端嵌套WEB页面有一下几种方案&#xff1a;WebView2[1]Electron[2]NW.js[3]sciter[4]miniblink[5]现在国内众多桌面程序都是用了以下五种&#xff0c;因为它跨平台更为方便&#x1f447;。…

【Tomcat】Tomcat配置与优化(内存、并发、管理)【自己配置】

一、JVM内存配置优化 主要通过以下的几个jvm参数来设置堆内存的&#xff1a; -Xmx512m 最大总堆内存&#xff0c;一般设置为物理内存的1/4 -Xms512m 初始总堆内存&#xff0c;一般将它设置的和最大堆内存一样大&#xff0c;这样就不需要根据当前堆使用情况而调整堆的大…

【2018-11-15】中证1000指数的估值详情

中证1000指数选取中证500和沪深300指数样本股以外的&#xff0c;流动性好的1000只股票组成&#xff0c;与沪深300 和中证500 等形成互补。 中证1000的个股大多数是由市场上流通市值排名在 800 到 1800 名之间的个股组成&#xff0c;是一个适用范围较广的小盘指数。 中证1000的…

印度光伏巨头Adani与华为签署500MW采购合同

日前&#xff0c;印度光伏巨头Adani与华为签订了采购合同。Adani未来一年的项目全部采用华为FusionSolar3.0智能光伏解决方案&#xff0c;首期500MW采购合同已经签署&#xff0c;将采购最新的智能光伏控制器&#xff08;组串逆变器&#xff09;SUN2000-43KTL、数据采集器SmartL…

宣布 .NET MAUI 支持 .NET 7 RC 2

点击上方蓝字关注我们&#xff08;本文阅读时间&#xff1a;6分钟)支持 .NET 7 Release Candidate 2 的 .NET 多平台应用程序 UI (MAUI) 现在可在 Windows 和 Mac 上的 Visual Studio 17.4 Preview 4 中使用。RC2 的主要主题是质量和对带有 iOS 16 的 Xcode 14 的 .NET 支持。此…

Uno开发的小游戏

大家好&#xff0c;我是沙漠尽头的狼。刚在微信群里逛&#xff0c;有网友发了Uno的在线小游戏&#xff0c;站长觉得不错&#xff0c;简单分享下&#xff1a;群聊涨见识Uno是什么&#xff1f;使用 C# 和 WinUI 实现像素完美的多平台应用程序&#xff0c;用于构建适用于 Windows、…

对01背包的分析与理解(图文)

首先谢谢Christal_R的文章(点击转到链接)让我学会01背包 本文较长&#xff0c;但是长也意味着比较详细&#xff0c;希望您可以耐心读完。 题目: 现在有一个背包(容器),它的体积(容量)为V,现在有N种物品(每个物品只有一个),每个物品的价值W[i]和占用空间C[i]都会由输入给出,现在…

linux内核源码剖析 博客,【Linux内存源码分析】页面迁移

页面迁移其实是伙伴管理算法中的一部分&#xff0c;鉴于其特殊性&#xff0c;特地另行分析。它是2007年的时候&#xff0c;2.6.24内核版本开发时&#xff0c;新增碎片减少策略(the fragmentation reduction strategy)所引入的。该策略也称之为反碎片技术(anti-gragmentation)。…

2018年下半年网络公式考试案例分析真题

阅读以下说明&#xff0c;回答问题1至问题3&#xff0c;将解答填入答题纸对应的解答栏内。【说明】某公司网络划分为两个子网&#xff0c;其中设备A是DHCP服务器&#xff0c;如图3-1所示。 【问题1】(6分&#xff0c;每空2分)DHCP在分配IP地址时使用 (1) 的方式&#xff0c; 而…

【单片机入门】(三)应用层软件开发的单片机学习之路-----UART串口通讯和c#交互...

本文由网友投稿。作者&#xff1a;陈显达原文标题&#xff1a;【单片机入门】(三)应用层软件开发的单片机学习之路-----UART串口通讯和c#交互原文链接&#xff1a;https://www.cnblogs.com/1996-Chinese-Chen/p/16826558.html引言在第一章博客中&#xff0c;我们讲了Arduino对E…

机器学习案例丨基于广泛和深入的推荐 - 餐厅评级预测

点击上方蓝字关注我们&#xff08;本文阅读时间&#xff1a;18分钟&#xff09;Microsoft Azure Machine Learning Studio 是微软强大的机器学习平台&#xff0c;在设计器中&#xff0c;微软内置了15个场景案例&#xff0c;但网上似乎没有对这15个案例深度刨析的分析资料&#…

css linux 等宽字体,比例字体等宽字体

我们都知道等宽字体和比例字体的区别&#xff0c;就在于比例字体(Monospaced Font)即每个字母宽度是按一定比例自动调整的&#xff0c;而等宽字体(Proportional font)则是固定宽度&#xff0c;固定间距&#xff0c;字体的每一个字母和字符所占的水平空间都是相同的。比例字体&a…

三星智能家居系统频繁故障 大批用户受到影响

Shelley Powers正在她密苏里州郊区的房子中鼾睡&#xff0c;突然警铃大作将她惊醒&#xff0c;在仔细排查之后&#xff0c;发现是虚惊一场&#xff0c;是安全传感器误报。在此之后的几周&#xff0c;她的三星Smart Things智能家居系统频繁出现故障&#xff0c;比如设定的灯具不…

适用于 .NET 的开源文本差异对比组件

你好&#xff0c;这里是 Dotnet 工具箱&#xff0c;定期分享 Dotnet 有趣&#xff0c;实用的工具或组件&#xff0c;希望对您有用&#xff01;简介对于开发人员来说&#xff0c;Git 是我们经常使用的工具&#xff0c;在每次编写完代码并提交后&#xff0c;我们可以通过 git dif…

box-shadow阴影合集

2019独角兽企业重金招聘Python工程师标准>>> * box-shadow可以设置6个值。其中4个可选&#xff1b;2个必须指定&#xff1a;分别是x轴偏移量和y轴偏移量&#xff0c;这2个值可以是正值&#xff0c;可以是负值&#xff0c;也可以是0&#xff0c;但不可以省略不写 阴影…

《数据科学R语言实践:面向计算推理与问题求解的案例研究法》一一2.5 为跨年度的个人参赛选手构造记录...

本节书摘来自华章计算机《数据科学R语言实践&#xff1a;面向计算推理与问题求解的案例研究法》一书中的第2章&#xff0c;第2.5节,作者&#xff1a;[美] 德博拉诺兰&#xff08;Deborah Nolan&#xff09;  邓肯坦普朗&#xff08;Duncan Temple Lang&#xff09;  更多章…

基于 abp 微服务架构的开源低代码平台

你好&#xff0c;这里是 Dotnet 工具箱&#xff0c;定期分享 Dotnet 有趣&#xff0c;实用的工具或组件&#xff0c;希望对您有用&#xff01;简介 ABP-MicroService是 一个基于ABP vNext微服务架构、vue-element-admin的后台管理框架&#xff0c;适用于大型分布式业务系统和企…

linux android sdk gengxinman,Android 实现增量更新

一、概述增量更新相较于全量更新的好处不言而喻&#xff0c;利用差分算法获得1.0版本到2.0版本的差分包&#xff0c;这样在安装了1.0的设备上只要下载这个差分包就能够完成由1.0-2.0的更新。比如&#xff1a;存在一个1.0版本的apkapk1.png然后需要升级到2.0版本&#xff0c;而2…