一、路由系统介绍

在django程序中,可以通过urls.py文件对所有的url进行任务的分配,根据路由规则的定义选择不同的业务处理函数进行处理

二、路由规则定义

1、路由规则代码如下,mysite/mysite/urls.py

from django.conf.urls import url, include
from django.contrib import admin
from cmdb import views urlpatterns = [ #####静态路由#####
# ① 匹配规则 http://127.0.0.1:8000/index/*
url(r'^index/', views.index), #####动态路由--利用正则表达式可以达到分页url的效果#####
# ② 匹配规则 http://127.0.0.1:8000/detail/432432 将最后面的数字当做参数传递给views.detail函数的nid参数
url(r'^detail/(\d+)', views.detail), # ③ 匹配规则 http://127.0.0.1:8000/detail2/432432/2 将最后面的两个数字当做参数分别传递给views.detail函数的nid和nnid参数
url(r'^detail2/(\d+)/(\d+)', views.detail2), # ④ 匹配规则 http://127.0.0.1:8000/detail3/432432/2 将最后面的两个数字根据自定义的名字当做参数分别传递给views.detail函数的p1和p2参数
url(r'^detail3/(?P<p1>\d+)/(?P<p2>\d+)', views.detail3), #####路由分发#####
# 当一个网站变得庞大之后,在一个project中就会存在很多的路由规则,可以使用路由分发将每个APP的路由规则分发至APP自己的路由规则进行处理
# 通过include可以将以web开头所有的url都分发给web.urls中的路由去进行处理
url(r'^web/', include("web.urls")),
]

2、业务处理函数的代码如下, mysite/cmdb/views.py

from django.shortcuts import render
from django.shortcuts import HttpResponse # Create your views here. def index(request):
return render(request, "index.html") def detail(request, nid):
print(nid)
return HttpResponse("OK") def detail2(request, nid, nnid):
print(nid, nnid)
return HttpResponse("OK") def detail3(request, p1, p2):
print(p1, p2)
return HttpResponse("OK")

3、程序目录结构

mysite/
├── cmdb
│   ├── admin.py
│   ├── apps.py
│   ├── __init__.py
│   ├── migrations
│   │   └── __init__.py
│   ├── models.py
│   ├── tests.py
│   └── views.py
├── db.sqlite3
├── manage.py
├── mysite
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
├── static
│   └── s1.css
└── templates
└── index.html

三、动态路由的应用 -- 实现分页和详细信息的功能

1、路由规则代码 mysite/mysite/urls.py

from django.conf.urls import url
from cmdb import views urlpatterns = [
url(r'^index/(\d+)/', views.index), # 分页
url(r'^detail/(\d+)/', views.detail), # 详细信息
]

2、业务处理函数代码 mysite/cmdb/views.py

from django.shortcuts import render
from django.shortcuts import HttpResponse # Create your views here. # 临时存放一些数据,生产环境中,这些数据都是保存在数据库中
USER_LIST = []
for item in range(108):
temp = {"id": item, "username": "name"+str(item), "email": "email"+str(item)}
USER_LIST.append(temp) def index(request, page):
# 将用户信息分页展示 print(page)
# 第一页 0-9
# 第二页 10-19
# 第三页 20-29
page = int(page)
start_id = (page - 1) * 10
end_id = page * 10 -1 user_list = USER_LIST[start_id:end_id] return render(request, "index.html", {"user_list": user_list}) def detail(request, nid):
# 用户ID的详细信息
nid = int(nid)
current_detail_dict = USER_LIST[nid]
return render(request, "detail.html", {"current_detail_dict": current_detail_dict})

3、分页html代码 mysite/templates/index.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link rel="stylesheet" href="/static/s1.css">
</head>
<body> <table>
<thead>
<tr>
<td>ID</td>
<td>用户名</td>
<td>详细</td>
</tr>
</thead>
<tbody>
{% for item in user_list %} <tr>
<td>{{ item.id }}</td>
<td>{{ item.username }}</td>
<td><a href="/detail/{{ item.id }}/" target="_blank">查看详细</a></td>
</tr>
{% endfor %} </tbody> </table> </body>
</html>

4、用户详细信息html代码 mysite/templates/detail.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link rel="stylesheet" href="/static/s1.css">
</head>
<body> <ul>
<li>{{ current_detail_dict.id }}</li>
<li>{{ current_detail_dict.username }}</li>
<li>{{ current_detail_dict.email }}</li> </ul> </body>
</html>

5、目录结构

mysite/
├── cmdb
│   ├── admin.py
│   ├── apps.py
│   ├── __init__.py
│   ├── migrations
│   │   └── __init__.py
│   ├── models.py
│   ├── tests.py
│   └── views.py
├── db.sqlite3
├── manage.py
├── mysite
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
├── static
│   └── s1.css
└── templates
├── detail.html
└── index.html

6、访问用户信息分页url,点击页面查看详细

  • 通过访问url http://127.0.0.1:8000/index/3/ 最后的数字可以换成其他的

  • 点击用户信息分页中的对应用户信息中的查看详细

Django之路由系统的更多相关文章

  1. Python学习(三十一)—— Django之路由系统

    转载自:http://www.cnblogs.com/liwenzhou/p/8271147.html Django的路由系统 Django 1.11版本 URLConf官方文档 URL配置(URLc ...

  2. Django之路由系统 Dj

    Django之路由系统   Django的路由系统 Django 1.11版本 URLConf官方文档 URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调 ...

  3. Django框架----路由系统(详细)

    Django的路由系统 Django 1.11版本 URLConf官方文档 URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表. ...

  4. Django之 路由系统

    Django的路由系统 URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表:你就是以这种方式告诉Django,对于这个URL调用这 ...

  5. Django 基础 路由系统

    Django框架简介 MVC框架和MTV框架(了解即可) MVC,全名是Model View Controller,是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图 ...

  6. Django 的 路由系统

    Django 的路由系统 URL 配置(URLconf)就像Django 锁支撑网站的目录. 它的本质就是URL 与要为该URL 调用的视图函数之间的映射表. 你就是以这种方式告诉Django, 对于 ...

  7. Django 的路由系统

    Django 的路由系统   Django 的路由系统 路由层 urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^$',views.ho ...

  8. python 之 Django框架(路由系统、include、命名URL和URL反向解析、命名空间模式)

    12.36 Django的路由系统 基本格式: from django.conf.urls import url urlpatterns = [ url(正则表达式, views视图函数,参数,别名) ...

  9. 6月19日 python学习总结 Django之路由系统

    Django之路由系统   Django的路由系统 Django 1.11版本 URLConf官方文档 URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调 ...

  10. Python Django之路由系统

    1.初识路由系统 路由系统是用户发请求到URL,然后URL根据路由系统重新指向到函数名的一个对应关系 2.创建project和app django-admin startproject mysite ...

随机推荐

  1. css08盒子模型

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  2. php和java静态变量用途的思考

    静态变量有哪些用途? 比如创建单例对象. 统计访问次数.数量等等. 多线路和进程中可能会使用. 深入理解补充.... PHP 单例模式解析和实战 php设计模式——单例模式 php static 与 ...

  3. CentOS安装JDK7

    1.下载jdk-7-linux-x64.rpm(http://www.Oracle.com/technetwork/java/javase/downloads/java-se-jdk-7-downlo ...

  4. new date() 函数在浏览器中的兼容问题!!

    引言: 同一种语言javascript,在不同的浏览器中,存在语言兼容性问题,本质上是由于不同的浏览器是支持的语言标准和实现上各有差异.本文将基于new Date来创建Date对象来分析这个问题. v ...

  5. HDU 4611 - Balls Rearrangement(2013MUTC2-1001)(数学,区间压缩)

    以前好像是在UVa上貌似做过类似的,mod的剩余,今天比赛的时候受baofeng指点,完成了此道题 此题题意:求sum(|i%A-i%B|)(0<i<N-1) A.B的循环节不同时,会有重 ...

  6. .net防止刷新重复提交(转)

    net 防止重复提交 微软防止重复提交方案,修改版 Code ; i < cookie.Values.Count; i++)                     log.Info(" ...

  7. the introduction of scrapy1.1 tools

    scrapy xxcommand:输出xxcommand的相关信息 help:scrapy的基本命令,用于查看帮助信息 version:查看版本信息,可见-V参数查看各组件的版本信息: startpr ...

  8. python 多层装饰器

    25.多层装饰器:      1.原理:执行顺序从上往下,#2和#3组成一个函数假设为nf1,#1和nf1组成一个函数nnf1           f1成为ck_ty_of_us的inner函数即nf ...

  9. Google Noto Sans CJK 字体

    下载链接:https://code.google.com/p/noto/source/browse/third_party/noto_cjk 等自己安装完成,再来个体验说明.

  10. 刷入临时recovery

    @echo off @echo 手机进 Fastboot 模式 fastboot.exe boot recovery.img @echo. @echo 等待手机进入临时REC pause echo o ...