首先在modules目录,新建一个目录‘news’(关于新闻详情页的后台)
news目录,init.py
from flask import Blueprint
news_blue = Blueprint('news_blue',__name__,url_prefix="/news")
from . import views
info目录,init.py(蓝图注册)
from info.modules.news import news_blue
app.register_blueprint(news_blue)
news目录,views.py(详情页的视图函数)
@news_blue.route("/detail/")
@get_user
def detail(id):
"""
1.获取用户信息
2.获取新闻排行相关内容
3.查询新闻数据
4.点击量累加
:param id:
:return:
"""
# # 1.获取用户信息
# user_id = session.get('id')
#
#
# user = None
# try:
# user = User.query.filter_by(id=user_id).first()
# except Exception as e:
# current_app.logger.error(e)
# abort(500)
user = g.user
# 2.获取新闻排行相关内容
news_clicks = []
try:
news_clicks = News.query.order_by(News.clicks.desc()).limit(6)
except Exception as e:
current_app.logger.error(e)
abort(500)
# 3.查询新闻数据
news = None
try:
news = News.query.filter_by(id=id).first()
except Exception as e:
current_app.logger.error(e)
abort(500)
# 4.点击量累加
if news:
news.clicks += 1
try:
db.session.commit()
except Exception as e:
current_app.logger.error(e)
db.session.rollback()
abort(500)
context = {
"user": user,
"news_clicks": news_clicks,
"news":news
}
return render_template('news/detail.html',context=context)
用户代码封装,info目录下的utils目录,comment.py,添加如下代码
def get_user(func):
def wrapper(*args,**kwargs):
# 1.获取用户信息
user_id = session.get('id')
user = None
try:
user = User.query.filter_by(id=user_id).first()
except Exception as e:
current_app.logger.error(e)
abort(500)
g.user = user
return func(*args,**kwargs)
return wrapper
index目录,views.py(找到相关的用户代码,index函数)
# user_id = session.get('id')
# user = None
# try:
# user = User.query.filter_by(id=user_id).first()
# except Exception as e:
# current_app.logger.error(e)
# abort(500)
user = g.user
前台修改
detail.html
文章详情页
{{ context.news.title }}
{{ context.news.create_time }}来源: {{ context.news.source }}
{{ context.news.clicks }}
{{ context.news.digest }}
{{ context.news.content | safe }}
收藏
{% if context.user %}
{% else %}
登录发表你的评论
{% endif %}
4条评论
点击排行
{% for news in context.news_clicks %}
- { loop.index | rank }}">{{ loop.index }}{{ news.title }}
{% endfor %}






