栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

深入理解flask pdf(flask源码分析)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

深入理解flask pdf(flask源码分析)

模型内容 relationship 1对多

需求: 用户进行留言,也要可以通过留言找到对应的用户
这样用户和留言的关系:1对多

1、创建模型,即创建表
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()

class UserInfo(db.Model):

	# 因为I是大写,所以数据库自动生成时,会加"_",数据库名变成:user_info
	
	# 自定义表名,如果不写,默认模型名即上面的:user_info
	# __tablename__ = 'userinfo'
	
	id = db.Column(db.Integer, primary_key=True, autoincrement=True) 
	# 可查看Column的__init__参数内容,可填参数有很多
	username = db.Column(db.String(50), nullable=False)
	password = db.Column(db.String(255), nullable=False)
	phone = db.Column(db.String(11), unique=True, nullable=False)
	comments = db.relationship('Comment', backref='user')  
	# backref 是本函数的名字,用于其他地方引用,这个可以先忽略,因为关联的是评论表,本次内容没有
	
class MessageBoard(db.Model):
	# 管理用户留言
	
	id = db.Column(db.Integer, primary_key=True, autoincrement=True)
	content = db.Column(db.String(255), nullable=False)
	create_at = db.Column(db.DateTime, default=datetime.now)
	user_id = db.Column(db.Integer, db.ForeignKey('user_info.id')) # 外键
	user = db.relationship('User', backref='messages') # 用户表关联留言表,

relationship 和外键不一样,外键是真实存在于表结构中的,而relationship只是存在逻辑系统中,在物理上或表内容结构上是找不到的对应关系的,类似于内存中,只是在当前flask中可以通过留言表找到用户表

注意:relationship 只能单向关联,不能双向关联,否则会报错,即模型(UserInfo)和(MessageBoard)不能都相互关联对方,可以关联其它表。

2、视图中使用
# view.py

......

# ---->>>: 留言板
@user_bp.route('/messages_board', methods=['GET'])  
def messages_board():
	uid = session.get('uid')
	user = User.query.get(uid)
	page = int(request.args.get('page', 1))
	pagination = MessageBoard.query.filter().order_by(-MessageBoard.create_at) 
		.paginate(page=page, per_page=5)
	# pagination 根据条件取到留言表的对象,是个列表
	return render_template('user/messages_board.html',
						   user=user,
						   pagination=pagination)
3、模板中使用
		
{% extends 'base.html' %}

{% block newcontent %}

	
    
{% if pagination.items %} {% for message in pagination.items %}
{% if message.user.username %} {{ message.user.username }} {% else %} 匿名用户 {% endif %} {{ message.create_at }}
{{ message.content }}
{% endfor %} {% else %}
当前还没有留言哦~~~~
{% endif %}
{% endblock %}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/773095.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号