一、路由系统介绍

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

二、路由规则定义

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

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

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

  1. from django.shortcuts import render
  2. from django.shortcuts import HttpResponse
  3. # Create your views here.
  4. def index(request):
  5. return render(request, "index.html")
  6. def detail(request, nid):
  7. print(nid)
  8. return HttpResponse("OK")
  9. def detail2(request, nid, nnid):
  10. print(nid, nnid)
  11. return HttpResponse("OK")
  12. def detail3(request, p1, p2):
  13. print(p1, p2)
  14. return HttpResponse("OK")

3、程序目录结构

  1. mysite/
  2. ├── cmdb
  3.    ├── admin.py
  4.    ├── apps.py
  5.    ├── __init__.py
  6.    ├── migrations
  7.       └── __init__.py
  8.    ├── models.py
  9.    ├── tests.py
  10.    └── views.py
  11. ├── db.sqlite3
  12. ├── manage.py
  13. ├── mysite
  14.    ├── __init__.py
  15.    ├── settings.py
  16.    ├── urls.py
  17.    └── wsgi.py
  18. ├── static
  19.    └── s1.css
  20. └── templates
  21. └── index.html

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

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

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

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

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

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

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. <link rel="stylesheet" href="/static/s1.css">
  7. </head>
  8. <body>
  9. <table>
  10. <thead>
  11. <tr>
  12. <td>ID</td>
  13. <td>用户名</td>
  14. <td>详细</td>
  15. </tr>
  16. </thead>
  17. <tbody>
  18. {% for item in user_list %}
  19. <tr>
  20. <td>{{ item.id }}</td>
  21. <td>{{ item.username }}</td>
  22. <td><a href="/detail/{{ item.id }}/" target="_blank">查看详细</a></td>
  23. </tr>
  24. {% endfor %}
  25. </tbody>
  26. </table>
  27. </body>
  28. </html>

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

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. <link rel="stylesheet" href="/static/s1.css">
  7. </head>
  8. <body>
  9. <ul>
  10. <li>{{ current_detail_dict.id }}</li>
  11. <li>{{ current_detail_dict.username }}</li>
  12. <li>{{ current_detail_dict.email }}</li>
  13. </ul>
  14. </body>
  15. </html>

5、目录结构

  1. mysite/
  2. ├── cmdb
  3.    ├── admin.py
  4.    ├── apps.py
  5.    ├── __init__.py
  6.    ├── migrations
  7.       └── __init__.py
  8.    ├── models.py
  9.    ├── tests.py
  10.    └── views.py
  11. ├── db.sqlite3
  12. ├── manage.py
  13. ├── mysite
  14.    ├── __init__.py
  15.    ├── settings.py
  16.    ├── urls.py
  17.    └── wsgi.py
  18. ├── static
  19.    └── s1.css
  20. └── templates
  21. ├── detail.html
  22. └── 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. 读书笔记--用Python写网络爬虫01--网络爬虫简介

    Wiki - Web crawler 百度百科 - 网络爬虫 1.1 网络爬虫何时使用 用于快速自动地获取网络信息,避免重复性的手工操作. 1.2 网络爬虫是否合法 网络爬虫目前人处于早期的蛮荒阶段, ...

  2. 安装 vs2005, vs2008 报错

    最近重新装了系统之后,在安装 vs2005, vs2008 到如下类似的错误,苦苦两天没有解决.不要问为什么是 vs2005,vs2008, 因为原有的项目就是老版本. 无意间在网上看到一句话,大意是 ...

  3. (转)C#静态构造函数

    静态构造函数是C#的一个新特性,在编程过程中用处并不广,它的主要目的是用于初始化一些静态的变量. 因为这个构造函数是属于类的,而不属于任何一个实例,所以这个构造函数只会被执行一次,而且是在创建此类的第 ...

  4. ORACLE外键和锁

    在oracle中,如果外键未加索引,对父表的修改,会导致子表被加上全表锁.这包括两种情况: 1.删除父表中的行,如果外键上没有索引,会导致子表被加上全表锁 2.更新父表的主键(根据关系数据库的原则,更 ...

  5. 监听UITabBarItem来拦截是否要跳转

    情景是这样的: 我需要在用户点击"我的"的时候, 判断是否已经登录, 如果没有, 就不进入该界面, 而是跳转到用户登录界面, 所以这里我需要进行UITabBarItem点击事件的拦 ...

  6. javascript之闭包深入理解(一)

    曾经在开始学习javascript的时候,很是不理解闭包的概念.今天想对它详细的剖析. 在说清楚闭包之前,必须先清楚作用域链. 作用域链 我们知道,执行环境是js中最为重要的一个概念.执行环境定义了变 ...

  7. JavaScript中的类式继承和原型式继承

    最近在看<JavaScript设计模式>这本书,虽然内容比较晦涩,但是细品才发现此书内容的强大.刚看完第四章--继承,来做下笔记. 书中介绍了三种继承方式,类式继承.原型式继承和掺元类继承 ...

  8. php中JPGraph入门配置与应用

    什么是PHP JPGraph? 专门提供图表的类库.它使得作图变成了一件非常简单的事情.生成非美工人士生成的图表.二维码算法. 到官方网站下载. docportal 帮助手册 src 包含主要代码. ...

  9. JavaScript获取Select下拉框Option的Value和Text值的方法

    Js获取select下拉列表框各个Option的Value值相对比较容易,不过获取Text值却有点麻烦,对于一个初学JavaScript的 新手来说,可能一时还无从下手,那么就请看下本文的方法,以一个 ...

  10. CMD 下 进入 ORACLE

    .sqlplus /nolog .connect sys/orcl@ORCL as sysdba .select sysdate from dual exit;