如何解决Flask-Mongoengine打印整个用户对象,而不是作者/用户名
我正在尝试显示博客文章作者姓名,但是flask mongoengine打印整个用户对象。 这是一个示例:
forms.py
class PostForm(FlaskForm):
title = StringField('Title',validators=[DataRequired()])
content = TextAreaField('Content',validators=[DataRequired()])
submit = SubmitField('Post')
models.py
class User(db.Document,UserMixin):
username = db.StringField(max_lenght=20,unique=True,required=True)
email = db.EmailField(max_lenght=120,required=True)
password = db.StringField(required=True)
def __repr__(self):
return f"User('{self.username}','{self.email}')"
class Post(db.Document):
title = db.StringField(max_lenght=100,required=True)
date_posted = db.DateTimeField(default=datetime.utcnow)
content = db.StringField(required=True)
author = db.ListField(db.ReferenceField(User))
def __repr__(self):
return f"Post('{self.title}','{self.date_posted}')"
routes.py
@app.route("/post/new",methods=['GET','POST'])
@login_required
def new_post():
form = PostForm()
if form.validate_on_submit():
username = User.objects(username=current_user.username)
post = Post(title=form.title.data,content=form.content.data,author=username)
post.save(force_insert=True,validate=False)
flash('Your post has been created!','success')
return redirect(url_for('home'))
return render_template('create_post.html',title='New Post',form=form)
最后是 home.html
{% block content %}
{% for post in posts %}
<h1>{{ post.title }}</h1>
<p>By {{ post.author }} on {{ post.date_posted.strftime('%Y-%m-%d') }}</p>
<p>{{ post.content }}</p>
{% endfor %}
{% endblock content %}
作者姓名显示为由[User('John','john@mail.com')]在2020-08-19上,我想打印由John于2020-08-19
请告知。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。