当前位置: 首页 > news >正文

Django框架之模型视图-URLconf

URLconf

  • 浏览者通过在浏览器的地址栏中输入网址请求网站
  • 对于Django开发的网站,由哪一个视图进行处理请求,是由url匹配找到的

配置URLconf

  • 1.settings.py

    • 指定url配置

      ROOT_URLCONF = '项目.urls'
      
  • 2.项目中urls.py

    • 匹配成功后,包含到应用的urls.py

      url(正则, include('应用.urls'))
      
  • 3.应用中urls.py

    • 匹配成功后,调用views.py对应的函数

      url(正则, views.函数名)
      
  • 4.提示

      1. 正则部分推荐使用 r,表示字符串不转义,这样在正则表达式中使用 \ 只写一个就可以2. 不能在开始加反斜杠,推荐在结束加反斜杠正确:path/正确:path错误:/path错误:/path/3. 请求的url被看做是一个普通的python字符串,进行匹配时不包括域名、get或post参数3.1 如请求地址如下:http://127.0.0.1:8000/18/?a=103.2 去掉域名和参数部分后,只剩下如下部分与正则匹配18/
    

说明:

虽然路由结尾带/能带来上述好处,但是却违背了HTTP中URL表示资源位置路径的设计理念。

是否结尾带/以所属公司定义风格为准。

路由命名与reverse反解析(逆向)

1 路由命名

在定义路由的时候,可以为路由命名,方便查找特定视图的具体路径信息。

1) 在使用include函数定义路由时,可以使用namespace参数定义路由的命名空间,如

url(r'^',include('book.urls',namespace='book'))

命名空间表示,凡是book.urls中定义的路由,均属于namespace指明的book名下。

命名空间的作用:避免不同应用中的路由使用了相同的名字发生冲突,使用命名空间区别开。

2) 在定义普通路由时,可以使用name参数指明路由的名字,如

urlpatterns = [url(r'^$',index),# 匹配书籍列表信息的URL,调用对应的bookList视图url(r'^booklist/$',bookList,name='index'),url(r'^testproject/$',views.testproject,name='test'),
]

2 reverse反解析

使用reverse函数,可以根据路由名称,返回具体的路径,如:

from django.core.urlresolvers import reverse
#或者
from django.urls import reversedef testproject(request):return HttpResponse("OK")# 定义视图:提供书籍列表信息
def bookList(request):url = reverse('book:test')print(url)return HttpResponse('index')
  • 对于未指明namespace的,reverse(路由name)
  • 对于指明namespace的,reverse(命名空间namespace:路由name)

 

 

http://www.lryc.cn/news/12034.html

相关文章:

  • 操作系统闲谈06——进程管理
  • DaVinci 偏好设置:用户 - UI 设置
  • Nacos超简单-管理配置文件
  • 基于微信小程序的中国各地美食推荐平台小程序
  • 如何优雅的导出函数
  • c++多重继承
  • 15_FreeRtos计数信号量优先级翻转互斥信号量
  • 二叉树(一)
  • 【SCL】1200案例:天塔之光数码管显示液体混合水塔水位
  • 5.1配置IBGP和EBGP
  • c++中超级详细的一些知识,新手快来
  • [答疑]经营困难时期谈建模和伪创新-长点心和长点良心
  • 计算机基础知识
  • Java爬虫—WebMagic
  • [软件工程导论(第六版)]第2章 可行性研究(复习笔记)
  • Mac下安装Tomcat以及IDEA中的配置
  • 【Linux详解】——文件基础(I/O、文件描述符、重定向、缓冲区)
  • HomMat2d
  • Python3 JSON 数据解析
  • Homebrew 安装遇到的问题
  • Metasploit框架基础(二)
  • c++容器
  • Vue.js如何实现对一千张图片进行分页加载?
  • 计算机网络复习(六)
  • Redis进阶:布隆过滤器(Bloom Filter)及误判率数学推导
  • Java创建对象的方式
  • dom基本操作
  • 如何将python训练的XGBoost模型部署在C++环境推理
  • About Oracle Database Performance Method
  • JavaScript 日期和时间的格式化大汇总(收集)