利用Django中的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. 能力有限,欢迎指错纠正。
时间: 2024-07-30 14:20:11

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

Django中的URL配置和模板

Django中的URL配置 : 实例: Python代码   urlpatterns = patterns('', # Example: # (r'^myweb/', include('myweb.foo.urls')), # Uncomment the admin/doc line below and add 'django.contrib.admindocs' # to INSTALLED_APPS to enable admin documentation: # (r'^admin/doc

WordPress使用make_clickable函数让文章网址URL自动生成超链接

在WordPress后台编辑文章的时候,直接粘贴网址到文章内容中,WordPress 并不能自动将网址生成超链接(可点击的链接),如果我们每次都要通过“插入或编辑链接”这个按钮来插入链接,操作有点麻烦.大家应该不知道WordPress 提供了一个名为 make_clickable 的函数,它可以自动将网址转换为可点击的超链接. 使用方法很简单,通过 the_content 钩子挂载 make_clickable  函数即可.具体方式是在主题的 functions.php 中添加下面的代码即可:

django中的url控制

1.django中的第一个控件:url控制  (路由分发) urls.py:请求路径与视图函数的之间的关系 步骤: 1.首先是要配置环境,   2.其次就是引路径   3.在视图的文件夹里面写相应的函数 简单使用: 1.通过正则加括号分组获取请求参数  (正则只是针对字符串格式的匹配)   2.一般在写地址的时候用正则中的有名分组,这样以后在调用的时候变量调用的时候直接用的是关键字传参,就可以随便的去书写参数的位置   3.分发:include(如果出现特别多的url写在一个urls中是非常麻烦

Django中的as_view方法源码分析

django的类视图拥有自动查找指定方法的功能,通过调用as_views()方法实现. 在探讨这个问题之前,先引入一段代码举个例子方便理解: 一般请求的判断方法: def View(request,*args,**kwargs): if request.method.lower() == 'get': do_something() if request.method.lower() == 'post': do_something() 编写自定义的视图类,前提必须要继承基类View,然后使用Vie

给Django中的url起名字

url反转  =>reverse 1.from django.shortcuts  import  reverse 2. 利用reverse函数对URL名称进行反转  reverse(url名称) 3.反转之后的内容就是我们需要的路由 如果我们反转的url请求需要参数的话  那么url的这个参数应该是以字典的形式传递给 reverse函数    例如 path(''book/book_detail/<book_id>,views.book_detail,name=''book_detai

在RHEL中搭建DHCP服务使得windows系统能自动获取IP地址

实验环境: RHEL6.5版本.Windows7系统各一台RHEL6.5版本的IP地址:192.168.100.222 本实验所使用到的一些命令: cd 切换目录 rpm 添加/删除程序功能 cat 查看文件 cp 复制 vim 编辑文件 service 启动/关闭某个程序 ---------------------------------操作步骤---------------------------------------- 一.检查光驱是否已经挂载在mnt目录下. 二.安装DHCP. 三.到

今天介绍一个渐变的方法,在shell里面自动生成注释简介

在编辑sh脚本时,我经常在shell中写一些注释.今天我介绍一种渐变方法,它可以在每次vim shell脚本时自动在shell中生成注释和其他信息. 让我们共享一个shell脚本模板文件,将其复制到用户的主目录并将其命名为.vimrc名称,以便我们在打开以.sh结尾的文件时自动生成一些注释信息,只需稍微修改即可. 这很方便吗?让我们为您分享代码,然后将以下文件粘贴到您自己的要求中,并根据您自己的要求进行更改.保存并退出. 编辑后,我发现ls看不到这个文件,因为它变成了一个隐藏文件,可以查看ll

实训24 功能块的生成与调用 注意功能块的背景数据块 变量表最左侧的地址是系统自动生成的。前面讲 功能块与功能的区别是 功能块不能一个扫描周期完成,本功能块例子 确实不是一个扫描周期能完成,例如判断转速超速 可能过了好多扫描周期

实训24 功能块的生成与调用 一定要注意 功能块的背景数据块中 最左侧的地址 是自动生成的. 我只需要在功能块的程序中输入 符号 名称 例如 start stop tof …….等等. 如下图 功能块 是用户编写的有自己存储区(背景数据块)的逻辑块. 功能块主要用于执行在一个扫描周期内不能结束的操作. TOF是timer 数据类型 属于输入局部变量. 本例程的输入参数TOF的数据类型为Timer(定时器),TOF的实参应该为定时器的编号 例如T1 PRESPEED 是静止变量 STAT 初始值是

关于django中的get_or_create方法的坑

最近在项目中发现了这样的一个坑,那就是我们的需求是不能添加一个相同的对象到数据库中,就通过某些字段的值组合成唯一值到数据库中去查找数据,如果没有找到对象,那就创建一条新的数据库记录,而刚好django又提供了这种方法,那就是get_or_create.可是在测试的时候发现会加入相同的对象. 而解决方法就是:其实我们可以从数据库级别来使这几个字段组合唯一,这样如果有重复的数据就会加不进去. class Meta: unique_together = (("xxx", "xxxx