首先在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/<int:id>")
@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
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>文章详情页</title>
<link rel="stylesheet" type="text/css" href="../../static/news/css/reset.css">
<link rel="stylesheet" type="text/css" href="../../static/news/css/main.css">
<script type="text/javascript" src="../../static/news/js/jquery-1.12.4.min.js"></script>
<script type="text/javascript" src="../../static/news/js/detail.js"></script>
<script type="text/javascript" src="../../static/news/js/main.js"></script>
</head>
<body>
<div class="header_con">
<div class="header">
<a href="#" class="logo fl"><img src="../../static/news/images/logo.png" alt="logo"></a>
{% if context.user %}
<div class="user_login fr">
<img src="../../static/news/images/person01.png" class="lgin_pic">
<a href="#">{
{ context.user.nick_name }}</a>
<a href="/passport/logout" onclick="logout()">退出</a>
</div>
{% else %}
<div class="user_btns fr">
<a href="javascript:;" class="login_btn">登录</a> / <a href="javascript:;" class="register_btn">注册</a>
</div>
{% endif %}
</div>
</div>
<div class="conter_con">
<div class="