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)*10end = page * 10user_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 viewsurlpatterns = [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 ConfigurationThe `urlpatterns` list routes URLs to views. For more information please see:https://docs.djangoproject.com/en/1.10/topics/http/urls/ Examples: Function views1. Add an import: from my_app import views2. Add a URL to urlpatterns: url(r'^$', views.home, name='home') Class-based views1. Add an import: from other_app.views import Home2. Add a URL to urlpatterns: url(r'^$', Home.as_view(), name='home') Including another URLconf1. Import the include() function: from django.conf.urls import url, include2. 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, includeurlpatterns = [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
转载于:https://www.cnblogs.com/yaabb163/p/6242529.html
Python 【第十章】 Django路由相关推荐
- python后台架构Django教程——路由映射urls
全栈工程师开发手册 (作者:栾鹏) 本文衔接至python后台架构Django开发全解. 有其他问题请先阅读:http://blog.csdn.net/luanpeng825485697/articl ...
- Python框架django路由管理
django路由管理 普通路由 参数路由 正则路由 正则参数路由 分布式路由 路由的定义 所有django的路由,都必须定义在 路由管理器 urls.py urlpatterns 列表中 在 urlp ...
- Python学习---Django路由系统【all】
Django URL (路由系统) Django URL (路由系统): URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL模式以及要为该URL模式调用的视图函数之间的映 ...
- python软件是干什么用的-python中的django是做什么的
Django是什么? Django是一个基于Python的Web应用框架.它与Python的另外一个Web 框架 Flask最大的区别是,它奉行 "包含一切" 的哲学.该理念即为: ...
- 关于Django路由层简单笔记
Django-路由层 URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表:你就是以这种方式告诉Django,对于客户端发来的某个U ...
- python后台架构Django教程——视图views渲染
全栈工程师开发手册 (作者:栾鹏) 本文衔接至python后台架构Django开发全解. 有其他问题请先阅读: http://blog.csdn.net/luanpeng825485697/artic ...
- python后台架构Django教程——admin管理员站点
全栈工程师开发手册 (作者:栾鹏) python教程全解 本文衔接至python后台架构Django开发全解. 有其他问题请先阅读:http://blog.csdn.net/luanpeng82548 ...
- python后台架构Django教程——项目配置setting
全栈工程师开发手册 (作者:栾鹏) 本文衔接至python后台架构Django开发全解. 有其他问题请先阅读:http://blog.csdn.net/luanpeng825485697/articl ...
- Python Web开发——Django框架学习
文章目录 Web开发简介 Web应用技术 Web前端开发 Web后端开发 使用 Django 开发后端服务 项目目标 管理员操作 登录界面 客户管理界面 添加客户界面 药品管理界面 添加药品界面 订单 ...
- 西游之路——python全栈——Django的web框架本质
知识预览 Django基本命令 二 路由配置系统(URLconf) 三 编写视图 四 Template 五 数据库与ORM admin的配置 一 什么是web框架? 框架,即framework,特指为 ...
最新文章
- 微信的行程卡服务器异常,行程卡打不开服务器崩了解决方法 行程卡短信查询步教程...
- 三点到六点是几个小时_环卫工在10吨垃圾里找了6小时,终于找到这张价值19万元的餐巾纸...
- oracleDBA-D1
- 区间调度之区间合并问题
- 【 .NET Core 3.0 】框架之二 || 后端项目搭建
- Power Designer逆向操作(从mysql5.0生成数据库的物理模型)
- Variant 数组
- 13个DNS 根服务器
- Silverlight+WCF 新手实例 象棋 棋子移动-线交叉点(六)
- MS SQL修改数据库名称
- Hadoop大数据原理与应用
- 新gre argument写作遇到难题如何破解?
- 键盘按键的各种编码对照表
- Python pyserial 串口开发
- html5编辑器(图片编辑器基于canvas)
- vue 找回密码_密码系统
- Taichi安装与应用
- intellidea 应用问题
- git worktree 的使用
- html5城堡防御游戏《小英雄呼呼》截图