python学习第七十天:路由

(69天为作业讲解)

路由

无名分组

url(r‘^test/([0-9]{4})/([0-9]{2})‘, views.test)

  • url为一个函数,第一个参数写正则表达式
  • 路由从上往下匹配,一旦匹配成功就不继续向下走了
  • 如果分多个组,相应的视图函数就需要用多个参数接收,个数必须一致,或者使用*args
  • 在setting里设置:APPEND_SLASH=False,请求时,浏览器不会自动补全斜杠,带上斜杠就匹配失败
  • 伪静态,方便搜索引擎收录

有名分组

  • url(r‘^test/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})‘, views.test)
  • 相应的视图函数中的参数名字和个数必须一致,否则会报错,位置可以颠倒
  • 有名分组可以使用**kwargs接收
  • 分组捕获的参数,都是str类型
  • 可以可以设置默认值

路由分发

  • 先导入from django.conf.urls import include
  • url(r‘^app01/‘,include(‘app01.urls‘))
  • 在相应的app里创建urls.py文件
  • 文件中的urlpatterns不能变名字,其他写法与自带的相同

反向解析

1.路由中,命一个名,url(r‘^index/‘, views.index,name=‘n1‘)
2.在视图函数里导入from django.shortcuts import reverse
    # 拿到反向解析的url
    url = reverse(‘n1‘)
3.在模板里使用时:
    {% url ‘n1‘ %}
4.带位置参数的反向解析
    url(r‘^index/([0-9]{4})/([0-9]{2})‘, views.index,name=‘n1‘)
  在视图中:url=reverse(‘n1‘,args=(2012,12,))
  在模板中:{% url ‘n1‘ 2012 12 %}
5.带关键字参数反向解析
    url(r‘^index/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})‘, views.index,name=‘n1‘)
  在视图中:
      方法一:url=reverse(‘n1‘,args=(2012,12,)
      方法二:url=reverse(‘n1‘,kwargs={‘year‘=2012,‘month‘:12})
  在模板中:
      方法一:{% url ‘n1‘ 2012 12 %}
      方法二:{% url ‘n1‘ month=12 year=2012 %}
  注意:按位置传,顺序必须是固定的
作用:修改路由中url的时候,其它地方不需要改动

名称空间

(知道它,但是建议不同app的url里name不能重名,app的名字_name)
主urls中
    url(r‘^app01/‘, include(‘app01.urls‘,namespace=‘app01‘)),
    url(r‘^app02/‘, include(‘app02.urls‘,namespace=‘app02‘)),
app01的urls中
	urlpatterns = [
		url(r‘^test‘,views.test3 ,name=‘test‘),
	]
app02的urls中
	urlpatterns = [
			url(r‘^test02‘,views.test3 ,name=‘test‘),
		]

在视图函数中:
    url=reverse(‘app02:test‘)
在模板中:
    <a href="{% url ‘app02:test‘ %}">点我跳到首页</a>

原文地址:https://www.cnblogs.com/luck-L/p/9585806.html

时间: 2024-08-03 05:29:55

python学习第七十天:路由的相关文章

python学习第七十四天:单表查询

单表查询 创建表 创建模型 在models.py中定义类,一个类就是一张表 from django.db import models class Book(models.Model): id = models.AutoField(primary_key=True) name = models.CharField(max_length=64) pub_data = models.DateField() price = models.DecimalField(max_digits=5, decima

python学习第七十五天:多表查询

创建模型 class Book(models.Model): nid = models.AutoField(primary_key=True) name = models.CharField(max_length=32) price = models.DecimalField(max_digits=5, decimal_places=2) publish_date = models.DateField() # 阅读数 reat_num=models.IntegerField(default=0)

python学习笔记七:条件&循环语句

1.print/import更多信息 print打印多个表达式,使用逗号隔开 >>> print 'Age:',42 Age: 42   #注意个结果之间有一个空格符 import:从模块导入函数 import 模块 from 模块 import 函数 from 模块 import * 如果两个模块都有open函数的时候, 1)使用下面方法使用: module1.open()... module2.open()... 2)语句末尾增加as子句 >>> import ma

Python学习第七天课后总结

<html> ? python学习第七天课后总结: 今日内容: 一,,字符编码:其实就是人类的语言与机器的语言进行转化的一种媒介. ? 1,人类语言与机器语言对照关系的结构被称为:编码表 ? 常用编码表大致有以下几个: ? 1> ascii (ASCII) 现为今出现最早的编码表,采用一个字节来存储字母却无法编码汉字 ? 2> GBK 这个是专门为中文来制作的编码,国人专用 ? 3> Shift_JIS 日文使用的文件编码方式 ? 4> Euc-kr 韩文使用的编码方式

Python学习笔记(十八)

一.datetime简介 datetime是Python处理日期和时间的标准库 二.导入datetime日期时间处理标准库 # datetime是日期时间模块,其中包括一个同名的日期时间类 from datetime import datetime 三.获取当前的年月日日期时间信息 # 获取当前日期时间信息 now = datetime.now() 四.指定日期时间 dt = datetime(2015,3,4,12,12,23) 五.将日期时间转换为Unix时间缀 # 将日期时间对象转换为Un

Python学习笔记(十)

一.类和构造函数的定义 class 类名(object): def __init__(self,name,score): self.name = name self.score = score def show_info(self): print("name=",name,"score=",score) 类名通常大写 二.通过变量生成实例 student1 = Student("cq",100) 三.自由的为对象实例添加属性 student1 =

python学习第七天 -- dict 和set

今天主要学习关于python 的dict(全称dictionary)和set.dict的用法跟javascript 中map表类似,key + value结构语言.而set,准确来说,只是key的集合. Dict 直接贴代码 >>> d = {'zhangsan': 95, 'lixi': 75, 'wuliu': 85} >>> d['zhangsan'] 95 dict插入 >>>d['wangba'] = 90 //直接插入wangba该学员的成

Python学习笔记第十九周

目录: 一.路由系统URL 1.Django请求生命周期 2.创建Django project 3.配置 4.编写程序 二.视图 三.模板 四.ORM操作 内容: 一.URL 1.Django请求生命周期 URL对应关系(匹配)-> 视图函数 -> 返回用户字符串   URL对应关系(匹配)    -> 视图函数 -> 打开一个HTML文件,读取内容 2.创建Django project django-admin  startproject myproject cd  myproj

Python学习笔记七-错误和异常

程序员总是和各种错误打交道,学习如何识别并正确的处理程序错误是很有必要的. 7.1错误和异常 1.错误 从软件方面来看,错误分为语法错误和逻辑错误两种.这两种错误都将导致程序无法正常进行下去,当Python检测到一个错误时就出现了异常. 2.异常 当编译器检测到错误并且意识到错误条件.解释器会引发一个异常(程序员也可以自己引发一个异常,后面会说到). 以下是7种Python中常见的错误. 1.NameError,尝试访问一个未申明的例子. 2.ZeroDivisionError,零除错误. 3.