文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
服务端的支持
在深入研究客户端之前,让我们先了解一下支持这些用户弹窗所需的服务器端的工作。 用户弹窗的内容将由新路由返回,它是现有个人主页路由的简化版本。 视图函数如下:
app/main/routes.py :用户弹窗视图函数。
@bp.route('/user/<username>/popup')
@login_required
def user_popup(username):
user = User.query.filter_by(username=username).first_or_404()
return render_template('user_popup.html', user=user)
该路由将被附加到 /user/\/popup URL,并且将简单地加载所请求的用户,然后渲染到模板中。 该模板是个人主页的简化版本:
app/templates/user_popup.html :用户弹窗模板。
<table class="table">
<tr>
<td width="64" style="border: 0px;"><img src="{{ user.avatar(64) }}"></td>
<td style="border: 0px;">
<p>
<a href="{{ url_for('main.user', username=user.username) }}">
{{ user.username }}
</a>
</p>
<small>
{% if user.about_me %}<p>{{ user.about_me }}</p>{% endif %}
{% if user.last_seen %}
<p>{{ _('Last seen on') }}:
{{ moment(user.last_seen).format('lll') }}</p>
{% endif %}
<p>{{ _('%(count)d followers', count=user.followers.count()) }},
{{ _('%(count)d following', count=user.followed.count()) }}</p>
{% if user != current_user %}
{% if not current_user.is_following(user) %}
<a href="{{ url_for('main.follow', username=user.username) }}">
{{ _('Follow') }}
</a>
{% else %}
<a href="{{ url_for('main.unfollow', username=user.username) }}">
{{ _('Unfollow') }}
</a>
{% endif %}
{% endif %}
</small>
</td>
</tr>
</table>
当用户将鼠标指针悬停在用户名上时,随后小节中编写的 JavaScript 代码将会调用此路由。客户端将服务器端返回的响应中的 html 内容显示在弹出窗口中。 当用户移开鼠标时,弹出窗口将被删除。 听起来很简单,对吧?
如果你想了解弹窗像什么样,现在可以运行应用,跳转到任何用户的个人主页,然后在地址栏的 URL 中追加 /popup 以查看全屏版本的弹出窗口内容。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论