分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 网页技术

利用Django中的url方法实现地址动态拼接自动生成超链接地址

发布时间:2023-09-06 01:31责任编辑:白小东关键词:url
目标

建立一个图书列表页面,显示图书名列表,并实现点击书名跳转到图书详细页面,显示图书详细信息。

  • URL方法简介
    • 功能:返回一个绝对路径的引用(不包含域名的URL);该引用匹配一个给定的视图函数和
      一些可选的参数。
    • 语法:{% url ‘some-url-name‘ value1 value2 %}
    • 参数‘some-url-name‘表示在urls.py文件中的路由地址;
    • 参数value1和value2表示拼接的值,可选。
    • 例如,urls.py: url(r‘^bookinfo/(\d+)/$‘, polls_views.bookinfo, name=‘book‘)
      html代码中:{% url ‘book‘ 3 %};
      拼接后返回地址为:bookinfo/3/
已有数据库及信息

数据库djangodemo中存有信息:

表polls_book

+----+--------------+-----------+
| id | name | person_id |
+----+--------------+-----------+
| 1 | 围城 | 1 |
| 2 | 蝴蝶梦 | 2 |
| 3 | 鲁滨逊漂流记 | 3 |
| 4 | 小王子 | 4 |
+----+--------------+-----------+

表polls_person

+----+------+-----+
| id | name | age |
+----+------+-----+
| 1 | Joe | 12 |
| 2 | walt | 18 |
| 3 | walt | 17 |
| 4 | Jany | 20 |
| 5 | John | 29 |
+----+------+-----+

思路
  • 先写出图书列表页面
  • 实现超链接自动拼接
  • 编写图书详情页面
实现
  • 项目目录信息
  • 建立页面路由
    在urls.py文件中添加
# 导入路由,支持正则表达式from django.conf.urls import url# 在路由匹配模式中添加图书列表页面的路由urlpatterns = [ ???url(r‘^booklist/$‘, polls_views.booklist), # 定义拼接地址,获取书籍信息 ???url(r‘^bookinfo/(\d+)/$‘, polls_views.bookinfo, name=‘bookinfo‘)]
  • 1. 在views.py文件中添加
# 图书列表页面控制器def booklist(request): ???# 导入图书类 ???from polls.models import Book ???# 实例化一个图书对象 ???books = Book.objects.all() ???# 建立空字典存储booklist ???dict_book = {} ???dict_book[‘booklist‘] = books ???# 向bookList.html页面传入数据dict_book ???return render(request, ‘bookList.html‘, dict_book)
  • 2. 在templates文件夹下新建bookList.html文件,并添加
{# 在bookList.html文件的body下添加如下代码 #}<body> ???<h2>图书架</h2> ???<ul> ???????{% for book in booklist %} ???????????{# 使用每本书的book.id作为获取详情的查询条件,生成链接 #} ???????????<li><a href="{% url ‘bookinfo‘ ?book.id ?%}">{{ book.name }}</a></li> ???????{% endfor %} ???</ul></body>
  • 3. 在view.py文件中定义获取书籍信息详细信息的控制方法
# 获取书籍信息def bookinfo(request, id): ???# 导入图书类 ???from polls.models import Book ???# 实例化一个图书对象,使用book.id查询该书籍数据 ???book = Book.objects.get(id=id) ???# 建立空字典存储booklist ???dict_book = {} ???# 存储book书名 ???dict_book[‘book‘] = book.name ???# 存储book作者 ???dict_book[‘author‘] = book.person.name ???# 存储book作者年龄 ???dict_book[‘author_age‘] = book.person.age ???# 向bookInfo.html页面传入数据dict_book ???return render(request, ‘bookInfo.html‘, dict_book)
  • 4. 在templates文件夹下新建bookInfo.html文件,并添加
{# 在bookInfo.html文件的body下添加如下代码 #}<body> ???<h2>{{ book }}</h2> ???<ul> ???????<li>作者:{{ author }}</li> ???????<li>年龄:{{ author_age }}</li> ???</ul></body>
实现效果
  • 在浏览器中访问http://127.0.0.1:8000/booklist/
  • 点击“鲁滨逊漂流记

可以看出,地址栏里的127.0.0.1:8000/bookInfo/3中"3"是根据书籍“鲁滨逊漂流记”的id获取的,“鲁滨逊漂流记”在数据库表polls_book中对应的id是3。

表polls_book
+----+--------------+-----------+
| id | name | person_id |
+----+--------------+-----------+
| 1 | 围城 | 1 |
| 2 | 蝴蝶梦 | 2 |
| 3 | 鲁滨逊漂流记 | 3 |
| 4 | 小王子 | 4 |
+----+--------------+-----------+

总结
  1. 以上工作的条件是你已经完成了Django的正常配置,并正常开启了server;
  2. 数据库中的数据是预先添加好的,这里只是查询数据库中的数据。
  3. 能力有限,欢迎指错纠正。

利用Django中的url方法实现地址动态拼接自动生成超链接地址

原文地址:http://www.cnblogs.com/waltsmith/p/8083247.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved