python-django案例-点击用户名查看用户详细信息 作者:马育民 • 2019-03-04 23:04 • 阅读:10336 # 概述 本文接 [python-django案例-显示用户名列表](http://www.malaoshi.top/show_1EF2tpVonUCr.html "python-django案例-显示用户名列表") ,要实现以下功能: 在用户列表页面,如下图: [![](http://www.malaoshi.top/upload/0/0/1EF2uCvaBYUf.png)](http://www.malaoshi.top/upload/0/0/1EF2uCvaBYUf.png) 点击“admin”,打开新页面,在新页面里显示该用户的详细信息,如下图: [![](http://www.malaoshi.top/upload/0/0/1EF2uCwalo7i.png)](http://www.malaoshi.top/upload/0/0/1EF2uCwalo7i.png) 此功能很常见: 1. 如:在淘宝商品列表页面点击某个商品,显示该商品的详细信息页面 2. 如:在腾讯视频、爱奇艺网站里,点击某个视频链接,观看该视频 **实现此功能的关键在于**:点击```admin```时,访问一个url,该url后面带有参数,该参数就是```admin```这条记录的id(即:数据库中的主键),然后在视图函数中,获取该id,通过模型查询id这条记录,加载模板,并将该记录显示到模板上 # 1. 修改用户列表页面 修改用户列表页面,在用户名增加超链接,核心代码如下: ``` {%for item in users%} {{item.username}} {%endfor%} ``` 超链接url是:```showuser?id={{item.id}}```,也就是说我们要将url```showuser```配置到路由中,后面的```?id={{item.id}}```,是给url传递的参数,在解析模板时,会显示真正的id **思考:**为什么根据id查询用户信息? # 2.实现视图函数 在该视图函数中,操作步骤如下: 1. 要获取url中的参数id 2. 根据id调用模型查询用户信息 3. 加载模板,将用户信息传给模板 4. 将模板解析后的html代码发送给浏览器 打开blog/views.py文件,增加如下代码: ``` def showuser(request): #获取url中的参数 id=request.GET.get("id") user=User.objects.get(pk=id) return render(request,'blog/showuser.html',{'user':user}) ``` 获取参数参见:http://www.malaoshi.top/show_1EF2uD9KjU9n.html # 3. 配置路由 打开myweb/urls.py文件,将url和上面的视图函数映射 ``` url(r'^showuser$', views.showuser), ``` **注意:** 匹配的地址是:```http://ip:port/showuser```,后面可以有url传统参数,但不可以有其他部分,如:```/``` 参见链接:http://www.malaoshi.top/show_1EF2uD9KjU9n.html ### 测试 配置好后,启动服务器,测试路由和视图函数,是否能够获取url的参数 # 4.实现模板 在模板中显示用户名、密码,用户名、密码是由视图函数传递过来的 在文件夹templates/blog文件夹下创建showuser.html文件,核心代码如下: ``` 用户名:{{user.username}} 密码:{{user.password}} ``` # 测试 启动服务,打开浏览器访问http://localhost:8000/userlist ,结果如下图: [![](http://www.malaoshi.top/upload/0/0/1EF2uCvaBYUf.png)](http://www.malaoshi.top/upload/0/0/1EF2uCvaBYUf.png) 点击“admin”,弹出界面如下: [![](http://www.malaoshi.top/upload/0/0/1EF2uCwalo7i.png)](http://www.malaoshi.top/upload/0/0/1EF2uCwalo7i.png) 注意url部分 # 改进 ### 路由改为 ``` url(r'^showuser$', views.showuser,name='showuser'), ``` ### 模板改为 ``` {%for item in users%} {{item.username}} {%endfor%} ``` 原文出处:http://malaoshi.top/show_1EF2uD25J6vj.html