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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...