python - Flask如何仿制微博评论发表的效果
PHP中文网
PHP中文网 2017-04-18 09:41:56
0
3
766

我想仿制微博评论的效果,就是发表评论之后,用户可以实时看见自己发的评论。
我尝试了使用重定向return redirect('main.index'),可是这样的话,并不能聚焦到原来那条微博的评论列表下面。
想请教下:
1.如果想发表评论后用户能实时看见自己发表的评论,那么在Flask的路由中return语句应该怎么写?
2.这种情况是否应该用ajax来解决??如果是的话,使用jQuery怎么与wtforms渲染的表单配合使用呢?

PHP中文网
PHP中文网

认证0级讲师

membalas semua(3)
刘奇

Weibo dipanggil aplikasi halaman tunggal (SPA). Bahagian hadapan dan belakang dipisahkan dan data dipindahkan melalui API.
Saya hanya ingin meniru kesan komen, iaitu, gunakan jawapan anda sendiri, serahkan api hujung belakang dengan ajax, dan panggil semula untuk mengubah suai halaman selepas menyimpan pada dasarnya hanya hiasan, jadi ia tidak tidak penting.

迷茫

Sebaik-baiknya menyiarkan kod anda bersama-sama.

Berikut ialah cadangan saya

Apabila anda meninggalkan ulasan, anda mesti menyerahkan borang, tetapi anda perlu memberitahu tapak web bahawa apa yang baru anda buat ialah ulasan dalam ubah hala selepas borang penyerahan
Jadi, selepas anda menyerahkan ubah hala Dalam orientasi, anda boleh menambah halaman=-1
Sila lihat contoh di bawah

@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)    

Halaman dalam kod di dalam digunakan untuk paparan halaman Anda boleh memahaminya sebagai parameter dalam url yang menghala ke halaman
Selepas dia menyerahkan borang, apa yang dia lakukan ialah ubah hala balik(url_for(. '. post',id = post.id, page = -1))
Dan, url_for boleh membawa **kwargs, jadi permintaan anda akan mengandungi page=-1
Pernyataan berikut digunakan sebagai halaman Apabila == -1, dia mengira bilangan halaman pada halaman terakhir dengan membahagikan (jumlah bilangan komen sedia ada) dengan (bilangan ulasan yang dipaparkan pada setiap halaman)

Dan tetapkan semula ke halaman pada masa ini, pada halaman komen di bawah (jika dipaparkan dalam penomboran), ulasan anda akan dipaparkan terus pada halaman terakhir
Saya tidak tahu jika anda faham apa yang saya katakan .

Ty80

Gunakan Websocket Skala tapak web sentiasa sesuai untuk websocket. Ia tidak diperlukan untuk aplikasi satu halaman.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan