Python 【第十章】 Django路由
路由可以简单理解就是
URL -> 函数名
例如:
/login1/ -> 函数名

urls.py文件中
urlpatterns = [
# url(r'^admin/', admin.site.urls),
url(r'^index/', views.index),
url(r'^index1/', views.index),
] #从下向下匹配,如果上面URL匹配成功下面就不进行匹配处理
如果要处理很多URL请求时,第一个处理方法,是每个URL写一个对应函数。这样效率不高,优处理方法是通过正则表达式处理:
路由关系中动态参数:
例子1:传递一个参数
urls.py文件中
urlpatterns = [
url(r'^login/(\d+)/', views.login),
]
views.py文件中接收时注意,传入随URL还有一个数字,所以要有两个参数。
def login(request,nid):
print(nid) #nid就是传入数字参数
request HttpResponse('OK')
例子2:传递多个参数
urls.py文件中
urlpatterns = [
url(r'^login/(\d+)(\d+)/', views.login),
]
views.py文件中接收时注意,传入随URL还有一个数字,所以要有多个参数。
def login(request,nid1,nid2):
print(nid1,nid2) #nid就是传入数字参数
request HttpResponse('OK')
例子3:根据名字传递参数
urls.py文件中
urlpatterns = [
url(r'^login/(?P<p1>\d+)/(?P<x2>\d+)/', views.login), ]
views.py文件中接收时注意,传入随URL形参数名称要对应。
def login(request,p1,x2):
print(p1,x2) # 就是传入数字参数
request HttpResponse('OK')
例子3:路由实现简单分页
views.py
USER_LIST = [] for item in range(94):
temp = {'id':item,'username':'alex'+str(item),'email':'email'+str(item)}
USER_LIST.append(temp) def index(request,page): page = int(page)
start = (page-1)*10
end = page * 10
user_list = USER_LIST[start:end]
return render(request,'index.html',{'user_list':user_list}) def detail(request,nid):
#详细页
nid = int(nid)
current_detail_dict = USER_LIST[nid]
return render(request,'detail.html',{'current_detail_dict':current_detail_dict})
urls.py
from django.conf.urls import url
from django.contrib import admin
from cmdb import views urlpatterns = [ url(r'^index/(\d+)', views.index),
url(r'^detail/(\d+)', views.detail),
]
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<h1 style="color: red">123</h1>
<h1>用户输入:</h1>
<form action="/index/" method="POST">
<input type="text" name="user" />
<input type="text" name="email" />
<input type="submit" value="提交" /> </form>
<h1>数据展示:</h1>
<table border="1">
<tr>
<th>ID:</th>
<th>用户名:</th>
<th>详细信息:</th>
</tr>
{% for line in user_list %}
<tr>
<td>{{ line.id }}</td>
<td>{{ line.username }}</td>
<td><a href="/detail/{{ line.id }}">查看详细</a></td>
</tr> {% endfor %}
</table> {#<script src="/statics/jquery-1.8.2.min.js"></script>#}
</body>
</html>
detail.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<ul> <li>
{{ current_detail_dict.id }}
</li>
<li>
{{ current_detail_dict.username }}
</li>
<li>
{{ current_detail_dict.email }}
</li> </ul> </body>
</html>
效果:

点入查看详细进入详细页detail.html

路由分发
在实现中遇到有多个app,每个app相互独立,在urls.py中要建立多个路由进行对应,效率不高。
改进方案,进行分级urls调置,第一级urls接收到,再转给 app内urls,进行分发

第一级urls.py
"""mysite URL Configuration The `urlpatterns` list routes URLs to views. For more information please see:
https://docs.djangoproject.com/en/1.10/topics/http/urls/
Examples:
Function views
1. Add an import: from my_app import views
2. Add a URL to urlpatterns: url(r'^$', views.home, name='home')
Class-based views
1. Add an import: from other_app.views import Home
2. Add a URL to urlpatterns: url(r'^$', Home.as_view(), name='home')
Including another URLconf
1. Import the include() function: from django.conf.urls import url, include
2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls'))
"""
from django.conf.urls import url
from django.contrib import admin
from cmdb import views
from django.conf.urls import url, include urlpatterns = [
url(r'^web/', include('cmdb.urls')),
]
app内建立一个urls.py

index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<h1 style="color: red">123</h1>
<h1>用户输入:</h1>
<form action="/index/" method="POST">
<input type="text" name="user" />
<input type="text" name="email" />
<input type="submit" value="提交" /> </form>
<h1>数据展示:</h1>
<table border="1">
<tr>
<th>ID:</th>
<th>用户名:</th>
<th>详细信息:</th>
</tr>
{% for line in user_list %}
<tr>
<td>{{ line.id }}</td>
<td>{{ line.username }}</td>
<td><a href="/web/detail/{{ line.id }}">查看详细</a></td>
</tr> {% endfor %}
</table> {#<script src="/statics/jquery-1.8.2.min.js"></script>#}
</body>
</html>
效果在网页输入web/index/1 这样通过web来明确访问那个app


Python 【第十章】 Django路由的更多相关文章
- python 终极篇 --- django 路由系统
URL配置 基本格式: from django.conf.urls import url urlpattern ...
- Python菜鸟之路:Django 路由、模板、Model(ORM)
Django路由系统 Django的路由系统让Django可以根据URI进行匹配,进而发送至特定的函数去处理用户请求.有点类似nginx的location功能. Django的路由关系分为三种:普通关 ...
- Python菜鸟之路:Django 路由补充1:FBV和CBV - 补充2:url默认参数
一.FBV和CBV 在Python菜鸟之路:Django 路由.模板.Model(ORM)一节中,已经介绍了几种路由的写法及对应关系,那种写法可以称之为FBV: function base view ...
- 【python】-- Django路由系统(网址关系映射)、视图、模板
Django路由系统(网址关系映射).视图.模板 一.路由系统(网址关系映射) 1.单一路由对应: 一个url对应一个视图函数(类) urls.py: url(r'^test', views.test ...
- python - django (路由)
# """ # Django路由分配系统简介: Django project目录中的urls.py文件中, 以Python [ ( ) ]的数据类型记录了可以访问到该站点 ...
- Python开发【Django】:路由规则
Django路由规则 1.基于正则的URL 在templates目录下创建index.html.detail.html文件 <!DOCTYPE html> <html lang=&q ...
- Python学习---Django路由系统【all】
Django URL (路由系统) Django URL (路由系统): URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL模式以及要为该URL模式调用的视图函数之间的映 ...
- 第二十章 Django数据库实战
第二十章 Django数据库实战 第一课 获取单表单数据的三种方式: urls.py中的路由代码: path('busniess',views.busniess), views.py中代码: def ...
- python框架之django
python框架之django 本节内容 web框架 mvc和mtv模式 django流程和命令 django URL django views django temple django models ...
- 第六篇:web之python框架之django
python框架之django python框架之django 本节内容 web框架 mvc和mtv模式 django流程和命令 django URL django views django te ...
随机推荐
- java web学习总结(二十九) -------------------JavaBean的两种开发模式
SUN公司推出JSP技术后,同时也推荐了两种web应用程序的开发模式,一种是JSP+JavaBean模式,一种是Servlet+JSP+JavaBean模式. 一.JSP+JavaBean开发模式 1 ...
- Spring的IOC和AOP之深剖
今天,既然讲到了Spring 的IOC和AOP,我们就必须要知道 Spring主要是两件事: 1.开发Bean:2.配置Bean.对于Spring框架来说,它要做的,就是根据配置文件来创建bean实例 ...
- 商业智能BI推动制造业智能化转型
制造业是我国国民经济的支柱产业,是我国经济增长的主导部门和经济转型的基础,如今我国制造业面临技术工艺不精.缺乏市场意识.商贸流通环节多.物流成本大.仓储效率低下等问题,正处在转型的特殊时期. 内忧: ...
- 数据库管理工具GUI - PremiumSoft Navicat Premium Enterprise 11.2.15 x86/x64 KEY
转载自: 数据库管理工具GUI - PremiumSoft Navicat Premium Enterprise 11.2.15 x86/x64 KEY Navicat Premium(数据库管理工具 ...
- 网页万能排版布局插件,web视图定位布局创意技术演示页
html万能排版布局插件,是不是感觉很强大,原理其实很简单,不过功能很强大哈哈,大量节省排版布局时间啊! test.html <!doctype html> <html> &l ...
- Highcharts入门小示例
一.创建条形图 1.创建div容器 <div id="container" style="min-width:800px;height:400px"> ...
- Atitti.dw cc 2015 绿色版本安装总结
Atitti.dw cc 2015 绿色版本安装总结 1.1. 安装程序无法初始化.请下载adobe Support Advisor检测该问题.1 1.1.1. Adobe Application M ...
- Linux常见查看硬件信息指令
CPUlscpu 查看的是CPU的统计信息./proc/cpuinfo 查看每个cpu信息,如每个CPU的型号,主频等. 内存free -m 概要查看内存情况cat /proc/meminfo 查看内 ...
- Hibernate 系列 02 - Hibernate介绍及其环境搭建
引导目录: Hibernate 系列教程 目录 昨晚喝多了,下午刚清醒,继续搞Hibernate.走起. 觉得还行的话,记得点赞哈,给我这个渣渣点学习的动力.有错误的话也请指出,省的我在错误上走了不归 ...
- putty提供的两个文件传输工具PSCP、PSFTP详细介绍
用 SSH 来传输文件 PuTTY 提供了两个文件传输工具 PSCP (PuTTY Secure Copy client) PSFTP (PuTTY SFTP client) PSCP 通过 SSH ...