问题描述
我正在尝试显示博客文章作者姓名,但是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 (将#修改为@)