利用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/
- 功能:返回一个绝对路径的引用(不包含域名的URL);该引用匹配一个给定的视图函数和
| 已有数据库及信息 |
数据库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 |
+----+--------------+-----------+
| 总结 |
- 以上工作的条件是你已经完成了Django的正常配置,并正常开启了server;
- 数据库中的数据是预先添加好的,这里只是查询数据库中的数据。
- 能力有限,欢迎指错纠正。
利用Django中的url方法实现地址动态拼接自动生成超链接地址的更多相关文章
- django中的url控制
1.django中的第一个控件:url控制 (路由分发) urls.py:请求路径与视图函数的之间的关系 步骤: 1.首先是要配置环境, 2.其次就是引路径 3.在视图的文件夹里面写相应的函 ...
- django中ModelForm save方法 以及快速生成空表单或包含数据的表单 包含错误信息
django中ModelForm学习系列一~save方法 Model代码 from django.db import models # Create your models here. class P ...
- Django中多种重定向方法使用
本文主要讲解使用HttpResponseRedirect.redirect.reverse以及配置文件中配置URL等重定向方法 本文使用了Django1.8.2 使用场景,例如在表单一中提交数据后,需 ...
- Django中安装搜索引擎方法。
全文检索 全文检索不同于特定字段的模糊查询,使用全文检索的效率更高,并且能够对于中文进行分词处理. haystack:全文检索的框架,支持whoosh.solr.Xapian.Elasticsearc ...
- django中使用POST方法 获取POST数据
在django中获取post数据,首先要规定post发送的数据类型是什么. 1.获取POST中表单键值数据 如果要在django的POST方法中获取表单数据,则在客户端使用JavaScript发送PO ...
- [UnicodeEncodeError]:Django中解决URL中文解释乱码问题
Django中在使用HttpResponseRedirect的时候,跳转URL中如果存在中文,会报错:会报UnicodeEncodeError错误. 解决办法: 使用urlquote对URL进行编码 ...
- 给Django中的url起名字
url反转 =>reverse 1.from django.shortcuts import reverse 2. 利用reverse函数对URL名称进行反转 reverse(url名称 ...
- Cognos11中通过URL传参访问动态Report
一.需求: 在浏览器输入一个URL,在URL后面加上参数就可以访问一个有提示值的报表?比如下面的报表 二.解决办法 Cognos Model 查询主题设计层概要 Select * from [UCO ...
- .net core 中简单封装Dapper.Extensions 并使用sqlsuger自动生成实体类
引言 由公司需要使用dapper 同时支持多数据库 又需要支持实体类 又需要支持sql 还需要支持事务 所以采用了 dapper + dapperExtensions 并配套 生成实体类小工具的方 ...
随机推荐
- Java从零开始学十六(多态)
一.什么是多态 多态性是指允许不同类的对象对同一消息作出响应.多态性包括参数化多态性和包含多态性.多态性语言具有灵活.抽象.行为共享.代码共享的优势,很好的解决了应用程序函数同名问题.多态有两种表现形 ...
- FIS3常用配置
FIS3常用配置: //作用:启用 fis-spriter-csssprites 插件,便于对png图片进行雪碧图合并 fis.match('::package', { spriter: fis.pl ...
- JSONP简单例子
jsonp的原理很简单,主要利用了HTML中所有有src的属性的标签可以跨域的特点,利用script的src进行get请求,后端输出一段js代码的字符串在script中便会执行. 当然后端输出普通的j ...
- MVC第一次访问比较慢的解决方案
一.NGen优化 %WINDIR%\Microsoft.NET\Framework64\v4.0.30319\ngen install EntityFramework.Core.dll %WINDIR ...
- oracle date日期类型 精析
一.date 1.date.sysdate格式说明 展示 date类型,展示格式既可以为:YYYY/MM/DD,也可以为YYYY/MM/DD HH24:MI:SS: 其存储格式只有一种:YYYY/ ...
- 《微赢微信公众平台系统5月14最新破解高级运营版+水果机+邀请函+微汽车+微食品+用户CRM》
<微赢微信公众平台系统5月14最新破解高级运营版+水果机+邀请函+微汽车+微食品+用户CRM> 此版本号眼下是淘宝卖600RMB的,其他VIP源代码论坛也都还没有公布.咱们这里全然免费分享 ...
- 网站Web性能测试:ApacheBench,Webbench,http_load使用教程
网站Web性能测试:ApacheBench,Webbench,http_load使用教程 Web服务器 欲思 10个月前 (05-25) 0评论 一个网站或者博客到底能够承受多大的用户访问量经常是 ...
- 非IT人士的云栖酱油之行 (程序猿迷妹的云栖之行)
摘要: 熟悉我的人都知道,我是一个贪玩儿且不学无术的姑娘,对于互联网我也是知之甚少:这次去到杭州参加阿里巴巴集团主办的为期4天的科技大会也是很例外:但是不得不说这次的会议真是让我很震惊.今天我就和大家 ...
- 国内四大炒股软件APP 全面技术解析
随着人们的焦点逐步由电脑PC端转为手机端之后,国内炒股软件也逐步开始推出手机炒股APP,但是面对如此众多的都以“最牛.最佳”等冠名的APP真的实至名归吗?为了大家不再走弯路,不沉迷智能选股,笔者将近期 ...
- TCP Socket 粘包
这两天看csdn有一些关于socket粘包,socket缓冲区设置的问题.发现自己不是非常清楚,所以查资料了解记录一下: 一两个简单概念长连接与短连接: 1.长连接 Client方与Server ...