在用户资料页面,基本上没有什么特别要强调和介绍的新概念。只需要创建一个含有HTML的新视图函数模板页面即可。
下面是视图函数(项目目录/views.py):
@app.route('/user/ ')
@login_required
def user(nickname):
user = User.query.filter_by(nickname = nickname).first()
if user == None:
flash('不存在用户:' + nickname + '!')
return redirect(url_for('index'))
posts = [
{ 'author': user, 'body': 'Test post #1' },
{ 'author': user, 'body': 'Test post #2' }
]
return render_template('user.html',
user = user,
posts = posts)
这里的@app.route标识主要是用来说明此视图函数不同于之前的那些。我们定义了一个名为 的参数。在函数里面它会转化成跟它同名的参数,当用户有请求的时候,例如这样的一个URL:URL/user/miguel,次视图函数就会识别为有一个名为nickname值为'miguel'的参数,即nickname = 'miguel'。
没必要为此方法的实现过程感到惊讶。首先我们需要通过把转化后的nickname参数作为条件,尝试着从数据库里把此用户的数据调用出来。如果没有查询到数据,我们就像之前那样,给用户一个错误的提示并且跳转到主页去。
一旦我们找到了改用户,我们就在模板下面来显示该用户的文章。要注意下的是在用户资料页面我们只让显示该用户的文章,所以文章的作者要是该用户。
初始化的视图模板非常的简单(项目目录/templates/user.html):
{% extends "base.html" %}
{% block content %}
用户昵称: {{user.nickname}}!
{% for post in posts %}
{{post.author.nickname}} 发布了: {{post.body}}
{% endfor %}
{% endblock %}
用户资料页面就做好了,不过在站点中还没有指向改页面的链接地址。为了让用户很方便的来查看自己的资料信息我们就把链接地址放到最上面的导航上去(项目目录/templates/base.html):
Microblog: Home {% if g.user.is_authenticated() %} | 你的个人资料 | 退出登陆 {% endif %}
查看更多关于Python的Flask框架中实现登录用户的个人资料和头像的教程的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did88484