Django框架之url路由层
一 Django数据库的一对多与多对多表的建立
 一对多
  publish_id的建立:publish=models.ForeignKey(to='Publish', to_field='id')
  book.publish_id
  book.publish
 多对多:(自动创建第三张表)
  authors = models.ManyToManyField(to='Author')
二 路由层的配置
 1 简单配置: url(r'^admin/', admin.site.urls),
  第一个参数是正则表达式(如果要精准匹配:'^publish/$')
  第二个参数是视图函数(不要加括号)
 2 无名分组
  按位置传参,分组之后,会把分组出来的数据,当位置参数,传到视图函数,所以,视图函数需要定义形参
  url(r'^publish/([0-9]{4})/([0-9]{2})$', views.publish),
  def publish(request,*args):   视图函数可以这样接收
 3 有名分组
  按关键字传参,有名分组之后,会把分组出来的数据,当关键字参数,传到视图函数,视图函数需要定义形参,形参名字要跟分组的名字对应,与顺序无关
  url(r'^publish/(?P<year>[0-9]{4})/(?P<mounth>[0-9]{2})/$', views.publish), ##(?P<year>[0-9])分组后赋值给year
  def publish(request, mounth,year):
  *****有名分组和无名分组,不要不能混用****
 4 反向解析
  1 先给路由命一个名:
   1 无参数:url(r'^publishadd133/$', views.publishadd,name='ddd'),
   2 无名分组:url(r'^publishadd/([0-9]{4})/([0-9]{2})/$', views.publishadd,name='ddd'),
   3 有名分组:url(r'^publishadd/(?P<year>[0-9]{4})/(?P<mounth>[0-9]{2})/$', views.publishadd,name='ddd'),
  2 在模板层:
   1 无参数:{% url 'ddd' %}
   2 无名分组的:{% url 'ddd' 2018 12 %}
   3 有名分组:{% url 'ddd' 2018 12 %}  还可以 {% url 'ddd' year=2018 mounth=12 %}  
  3 在视图层:在视图函数里:
   from django.shortcuts import reverse  ##必须先导入模块 reverse 
   1 无参数:url=reverse('ddd')
   2 无名分组:url=reverse('ddd',args=(2018,12,))
   3 有名分组:url=reverse('ddd',args=(2018,12,)) 还可以 url=reverse('ddd',kwargs={'year':2018,'mounth':12})
 5 路由分发 
  1 在不同的app里创建urls.pyo8
  2 在总路由
   from django.conf.urls import include   ##必须先导入模块 include
   url(r'^blog/',include('blog.urls')),
   url(r'^app01/',include('app01.urls')),
  3 在不同的app的urls里配置路由关系 
  ***重点***总路由,不能加结束符$
 6 名称空间 ***一般不要用***
  1 url(r'^blog/',include('blog.urls',namespace='blog')),
  2 子路由:url(r'^publish/$', views.publish,name='test'),
  3 反向解析:
   1 视图层:url = reverse('blog:test')
   2 模板层:{% url 'app01:test'%}
  ****常用下面的命名方式代替上面操作*** ##重命名直接加上在那个app上
  子路由:url(r'^publish/$', views.publish,name='app01_test'),  
 7 伪静态
  路由:url(r'^book/(?P<id>\d+.html)',views.book),
  访问:http://127.0.0.1:8000/book/4.html
三 作业:
 1 自己尝试对象有没有删除方法,更新方法
 2 有时间的同学研究一下如何手动创建第三张表
 3 图书管理系统,路由不用get形式传参,用有名分组,无名分组
 4 http://127.0.0.1:8000/ 访问这个路径,匹配到图书列表
 5 路由匹配不上,调到404的页面
 6 图书管理系统,继续写

day73 Django框架之URL的更多相关文章

  1. Django框架----命名URL和URL反向解析

    在使用Django 项目时,一个常见的需求是获得URL 的最终形式,以用于嵌入到生成的内容中(视图中和显示给用户的URL等)或者用于处理服务器端的导航(重定向等).人们强烈希望不要硬编码这些URL(费 ...

  2. Django 框架之 URL

    URL配置就像Django所支撑网站的目录.它的本质是URL模式以及要为该URL模式调用的视图函数之间的映射表. # 示例: urlpatterns = [ path(route, view, kwa ...

  3. Django框架——基础之路由系统(urls.py)

    1.URL路由系统前言 URL是Web服务的入口,用户通过浏览器发送过来的任何请求,都是发送到一个指定的URL地址,然后被响应. 在Django项目中编写路由,就是向外暴露我们接收哪些URL的请求,除 ...

  4. Django框架——基础之路由系统(urls.py)11111111

    1.URL路由系统前言 URL是Web服务的入口,用户通过浏览器发送过来的任何请求,都是发送到一个指定的URL地址,然后被响应. 在Django项目中编写路由,就是向外暴露我们接收哪些URL的请求,除 ...

  5. 第三百零四节,Django框架,urls.py模块,views.py模块,路由映射与路由分发以及逻辑处理——url控制器

    Django框架,urls.py模块,views.py模块,路由映射与路由分发以及逻辑处理——url控制器 这一节主讲url控制器 一.urls.py模块 这个模块是配置路由映射的模块,当用户访问一个 ...

  6. 二 Django框架,urls.py模块,views.py模块,路由映射与路由分发以及逻辑处理——url控制器

    Django框架,urls.py模块,views.py模块,路由映射与路由分发以及逻辑处理——url控制器 这一节主讲url控制器 一.urls.py模块 这个模块是配置路由映射的模块,当用户访问一个 ...

  7. 3/19 Django框架 url路由配置及模板渲染

    3/19 Django框架 url路由配置及模板渲染 1.路由分配 URL(Uniform Resoure Locato):统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示, ...

  8. Python的Django框架中的URL配置与松耦合

    Python的Django框架中的URL配置与松耦合 用 python 处理一个文本时,想要删除其中中某一行,常规的思路是先把文件读入内存,在内存中修改后再写入源文件. 但如果要处理一个很大的文本,比 ...

  9. Django之web框架和url路由

    一.web框架 1.什么是web框架 Web框架是用来进行Web应用开发的一个软件架构,开发者在基于Web框架实现自己的业务逻辑.Web应用本质上就是一个socket服务端,而用户的浏览器就是一个so ...

随机推荐

  1. Sql Server数据字典

    1:添加字段属性或者表属性 execute sys.sp_addextendedproperty @name = N'MS_Description', @value = N'要添加的属性信息', @l ...

  2. Introduction tp Operating System

    一.虚拟化 为了让用户告诉操作系统如何利用虚拟机功能,OS提供给应用程序一些接口——系统调用,也会说提供了一个标准库. CPU通过分时达到虚拟化. 内存物理模型只是一个字节数组,读写修改需要制定地址. ...

  3. kylin cubing algorithm(算法)

    看到这一块的视频,结合光方博客的一些文档及自己的一点理解,记个笔记,以备不时之需. by layer cubing 1.on MR  这个算法的对cube的计算就像它的名字一样是按player进行的. ...

  4. ITextSharp构造PDF文件

    1.1 生成Document Document是我们要生成的PDF文件所有元素的容器,因此要生成一个PDF文档,必须首先定义一个Document对象. Document有三种构造函数:    publ ...

  5. 在Ubuntu下安装lrzsz

    目录 自动安装 手动安装 下载 解压 安装 创建连接 在Ubuntu 14.04x64下安装lrzsz 自动安装 在终端中,输入命令 sudo apt-get install lrzsz 由于一些原因 ...

  6. 手机响应式echarts

    // 基于准备好的dom,初始化echarts实例var myChart = echarts.init(document.getElementById('main'));// 使用刚指定的配置项和数据 ...

  7. 内网渗透 关于GPO

    网上有很多讲内网渗透的文章,但看来看去还是一老外的博客给力,博客地址:www.harmj0y.net/blog,看完就明白这里面的很多思路都非常好. 做内网时,有时会碰到目标的机器开防火墙,所有端口基 ...

  8. DedeCms 数据库类使用实例说明 mysql.php

    //dedecms的数据库操作类说明,非常实用,在二次开发中尤其重要.//引入common.inc.php文件require_once (dirname(__FILE__) . "/incl ...

  9. JAVA结对编程--阶段总结

    一.需求分析 1.基本需求 随机生成n道题目 支持整数.分数,支持多运算符 能判断正误,错误时给出正确答案 能计算出正确率 2.扩展需求 处理生成题目并输出到文件 完成题目后从文件读入并判题 支持多语 ...

  10. linux下软件安装的几种方式

    linux下软件安装的几种方式(主要有源码安装, rpm安装, yum安装). 一:源码安装 几乎所有的开源软件都支持在Linux下运行,而这些软件一般都以源码形式发放,只需要Linux安装了gcc. ...