消息显示损坏

问题描述 投票:0回答:1

我正在为一个顶点项目开发社交媒体网站,需要显示我的用户消息。我在我的数据库中看到创建并添加到我的消息表中的消息,但我似乎无法获得 HTML 来显示它们。

我在这里待了大约 6 个小时。我尝试过更改我的命名约定,检查我的变量、表单、模型和服务器路由。

HTML:

{% block body %}

<h1>My Messages:</h1>
<ul>
{% for message in messages %}
    <li>
        <a href="/messages/{{ message.message }}">{{ message.sender }} {{ message.message }}</a>
    </li>
{% endfor %}
</ul>
{% endblock %}

路线:

@app.route('/messages', methods=['GET', 'POST'])
@login_required
def messages():
    message_form = MessageForm()
    message_form.recipient.choices = [(user.id, user.username) for user in User.query.all()]
    
    if message_form.validate_on_submit():
        sender_id = current_user.id
        recipient_id = int(message_form.recipient.data)
        message = message_form.message.data  
        new_message = Message(sender_id=sender_id, recipient_id=recipient_id, message=message)
        db.session.add(new_message)
        db.session.commit()
        flash('Message sent!')
        return render_template('messages.html', message_form=message_form, message=message)

型号:

class Message(db.Model):
   __tablename__ = "messages"
    
    message_id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    sender_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False)
    recipient_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False)
    date_time = db.Column(db.DateTime, default=datetime.utcnow)
    message = db.Column(db.String, nullable=False)
    
    sender = db.relationship('User', foreign_keys=[sender_id])
    recipient = db.relationship('User', foreign_keys=[recipient_id])
    
    def get_time(self):
        return self.timestamp.strftime("%b %d, %Y %H:%M:%S")
    
    def __repr__(self):
        return f"<Message={self.message}>"

表格:

class MessageForm(FlaskForm):
    sender_id = HiddenField('Sender')
    recipient = SelectField('Recipient', validators=[DataRequired()])
    message = TextAreaField('Message', validators=[DataRequired()])
    submit = SubmitField('Submit')
python html message inbox
1个回答
0
投票

我修好了。我正在调用消息的端点而不是我的 HTML 中的函数。更新后的 HTML 在 url_for 方法中的“消息”之前没有正斜杠:

{% block body %}
<h1>My Messages:</h1>
<ul>
{% for message in messages %}
    <li>
        <div method="GET", action="{{ url_for ('messages') }}">
            <p>From: {{ message.sender.username }}</p>
            <p>Message: {{ message.message }}</p>
            <p>Date/Time: {{ message.date_time }}</p>
        </div>
    </li>
{% endfor %}
</ul>
{% endblock %}

working messages:

© www.soinside.com 2019 - 2024. All rights reserved.