Weibo est appelé une application à page unique (SPA). Le front-end et le back-end sont séparés et les données sont transférées via l'API. Je veux juste imiter l'effet de commentaire, c'est-à-dire utiliser votre propre réponse, soumettre l'API back-end avec ajax et rappeler pour modifier la page après l'enregistrement. Le wtform n'est fondamentalement qu'une décoration, donc ce n'est pas le cas. ça n'a pas d'importance.
Lorsque vous laissez un commentaire, vous devez soumettre le formulaire, mais vous devez informer le site Web que ce que vous venez de faire était un commentaire dans la redirection après le formulaire de soumission Donc, après avoir soumis la redirection. Dans l'orientation, vous pouvez ajouter une page=-1 Veuillez voir l'exemple ci-dessous
@main.route('/post/<int:id>')
def post(id):
post = Post.query.get_or_404(id)
form = CommentForm()
if form.validate_on_submit():
comment = Comment(body = form.body.data, post = post, author = current_user._get_current_object())
db.session.add(comment)
flash('Your comment has been published.')
return redirect(url_for('.post',id = post.id, page = -1))
page = request.args.get('page',1,type=int)
if page == -1:
page = (post.comments.count()-1)//current_app.config['FLASKY_COMMENTS_PER_PAGE']+1
pagination = post.comments.order_by(Comment.timestamp.asc()).paginate(
page,per_page = current_app.config['FLASKY_COMMENTS_PER_PAGE'],
error_out = False)
comments = pagination.items
return render_template('post.html',posts=[post],form = form,comments=comments,pagination = pagination)
La page dans le code à l'intérieur est utilisée pour l'affichage de la pagination. Vous pouvez la comprendre comme le paramètre dans l'URL qui pointe vers la page Après avoir soumis le formulaire, ce qu'il fait est de rediriger return redirect(url_for(. '.post',id = post.id, page = -1)) Et, url_for peut apporter **kwargs, donc votre demande contiendra une page=-1 L'instruction suivante est utilisée comme page Quand == -1, il calcule le nombre de pages sur la dernière page en divisant (le nombre total de commentaires existants) par (le nombre de commentaires affichés sur chaque page)
Et réaffectez-le à la page. A ce moment, sur la page de commentaire ci-dessous (s'il est affiché en pagination), votre commentaire sera affiché directement sur la dernière page Je ne sais pas si vous comprenez ce que j'ai dit. .
Weibo est appelé une application à page unique (SPA). Le front-end et le back-end sont séparés et les données sont transférées via l'API.
Je veux juste imiter l'effet de commentaire, c'est-à-dire utiliser votre propre réponse, soumettre l'API back-end avec ajax et rappeler pour modifier la page après l'enregistrement. Le wtform n'est fondamentalement qu'une décoration, donc ce n'est pas le cas. ça n'a pas d'importance.
Il est préférable de publier votre code ensemble.
Voici mes suggestions
Lorsque vous laissez un commentaire, vous devez soumettre le formulaire, mais vous devez informer le site Web que ce que vous venez de faire était un commentaire dans la redirection après le formulaire de soumission
Donc, après avoir soumis la redirection. Dans l'orientation, vous pouvez ajouter une page=-1
Veuillez voir l'exemple ci-dessous
La page dans le code à l'intérieur est utilisée pour l'affichage de la pagination. Vous pouvez la comprendre comme le paramètre dans l'URL qui pointe vers la page
Après avoir soumis le formulaire, ce qu'il fait est de rediriger return redirect(url_for(. '.post',id = post.id, page = -1))
Et, url_for peut apporter **kwargs, donc votre demande contiendra une page=-1
L'instruction suivante est utilisée comme page Quand == -1, il calcule le nombre de pages sur la dernière page en divisant (le nombre total de commentaires existants) par (le nombre de commentaires affichés sur chaque page)
Et réaffectez-le à la page. A ce moment, sur la page de commentaire ci-dessous (s'il est affiché en pagination), votre commentaire sera affiché directement sur la dernière page
Je ne sais pas si vous comprenez ce que j'ai dit. .
Utilisez Websocket. L'échelle du site Web est toujours adaptée à Websocket. Elle n'est pas nécessaire pour les applications d'une seule page.