doraemon的python django框架的路由详解(国庆大更新)

### 11.8 路由

#### 11.8.1 urlconf

```python
from django.conf.urls import url
from app01 import views
urlpatterns = [
    url(r‘^admin/‘,admin.site.urls),   #这里用到了正则
    url(r‘^home‘,views.home,{},name=‘home‘),
]
```

#### 11.8.2 分组和命名分组

url上捕获的都是字符串

分组

```python
url(r‘^blog/([0-9]{4})/(\d{2})),views.blogs,name=‘blogs‘)

#以括号为单位,捕获到的参数会按照位置传参传递给视图函数
```

命名分组

```python
url(r‘^blog/(?P<year>[0-9]{4})/(?P<month>\d{2})),views.blogs,name=‘blogs‘)

#捕获的参数会按照关键字传参传递给视图函数
```

传递参数

```python
url(r‘^home/(?P<year>\d{4})$‘),views.home,{‘year‘:2019,name=‘home‘})
```

#### 11.8.3 路由分发

```python
from django.conf.urls import url,include
from django.contrib import admin
from app01 import views
urlpatterns = [
    url(r‘^admin/‘,admin.site.urls),   #这里用到了正则
    url(r‘^app01‘,include(‘app01.urls‘,namespace=‘app01‘)),
    url(r‘^app02‘,include(‘app02.urls‘,namespace=‘app02‘)),
]
```

#### 11.8.4 url的命名和反向解析

静态路由

```python
url(r‘^home/$‘,views.home,name=‘home‘)
```

反向解析:

- 模板   {% url ‘blog‘ %}   ------>‘app01/home/‘
- py文件 

```python
from django.urls import reverse
reverse(‘home‘)  ---->‘app01/home/‘
```

分组:

```python
url(r‘^blog/([0-9]{4})/(\d{2})),views.blogs,name=‘blogs‘)
```

反向解析:

- 模板  {% url ‘blog‘ ‘2019‘ ‘06‘%}   ------>‘app01/blog/2019/06‘
- py文件

```python
from django.urls import reverse
reverse(‘blogs‘,‘args=(‘2019‘,‘06‘)‘)  ---->‘app01/blog/2019/06‘
```

命名分组:

```python
url(r‘^blog/(?P<year>[0-9]{4})/(?P<month>\d{2})),views.blogs,name=‘blogs‘)
```

反向解析:

- 模板
  - {% url ‘blog‘ ‘2019‘ ‘06‘%}   ------>‘app01/blog/2019/06‘   按照位置传参
  - {% url‘blogs year=‘2019‘ month=‘06‘ %}-----> ‘app01/blog/2019/06‘   按照关键字传参
- py文件

```python
from django.urls import reverse
reverse(‘blogs‘,‘args=(‘2019‘,‘06‘)‘)  ---->‘app01/blog/2019/06‘
from django.urls import reverse
reverse(‘blogs‘,‘kwargs=(‘year‘=2019‘,‘month‘=‘06‘)‘)  ---->‘app01/blog/2019/06‘

```

#### 11.8.5 namespace

```python
 url(r‘^app01‘,include(‘app01.urls‘,namespace=‘app01‘)),
```

应用

```python
{% url ‘app01:home‘ %}   #在模板中应用,一定要加上namespace
reverse(‘app01:home‘)    #在py文件中应用,一定要加上namespace
```

原文地址:https://www.cnblogs.com/doraemon548542/p/11638544.html

时间: 2024-07-30 11:33:34

doraemon的python django框架的路由详解(国庆大更新)的相关文章

第六章 Django框架学习——ORM详解

第六章 Django框架学习--ORM介绍与常用方法 一.ORM介绍 二.ORM中的常用字段和参数 三.ORM中的关系字段--一对一(OneToOneField) 四.ORM中的关系字段--多对多(ManyToManyField) 五.ORM中的元信息 一.ORM介绍(部分内容前面的章节已经介绍过,此处只做简单介绍) 什么是ORM(what): ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中. Django中的ORM: Django配置数据库 1.在se

python web框架企业实战详解(第六期)\第四课时-webpy&amp;django

查找收集python的IDE,并分析各自优缺点:选择自己喜欢的IDE搭建各自的webpy和django环境,最后截屏就作业. PyCharm PyCharm是由JetBrains打造的一款Python IDE. PyCharm具备一般 Python IDE 的功能,比如:调试.语法高亮.项目管理.代码跳转.智能提示.自动完成.单元测试.版本控制等. 另外,PyCharm还提供了一些很好的功能用于Django开发,同时支持Google App Engine,更酷的是,PyCharm支持IronPy

django定时任务python调度框架APScheduler使用详解

# coding=utf-8 2 """ 3 Demonstrates how to use the background scheduler to schedule a job that executes on 3 second 4 intervals. 5 """ 6 7 from datetime import datetime 8 import time 9 import os 10 11 from apscheduler.schedul

python django模型内部类meta详解

Django 模型类的Meta是一个内部类,它用于定义一些Django模型类的行为特性.以下对此作一总结: abstract 这个属性是定义当前的模型类是不是一个抽象类.所谓抽象类是不会对应数据库表的.一般我们用它来归纳一些公共属性字段,然后继承它的子类可以继承这些字段.比如下面的代码中Human是一个抽象类,Employee是一个继承了Human的子类,那么在运行syncdb命令时,不会生成Human表,但是会生成一个Employee表,它包含了Human中继承来的字段,以后如果再添加一个Cu

Django框架 之 querySet详解

浏览目录 可切片 可迭代 惰性查询 缓存机制 exists()与iterator()方法 QuerySet 可切片 使用Python 的切片语法来限制查询集记录的数目 .它等同于SQL 的LIMIT 和OFFSET 子句. 1 >>> Entry.objects.all()[:5]      # (LIMIT 5) 1 Entry.objects.all()[5:10]    # (OFFSET 5 LIMIT 5) 不支持负的索引(例如Entry.objects.all()[-1]).

python web框架企业实战详解(第六期)\第一课时-sorted&amp;if&amp;for

1.元组和列表的区别? 元组:用元括弧括起来的一组元素集合.其特点是内容丌可变,即一旦定义其长度和内容都是固定的:类似于C询言的数组. 列表:由中括弧括起来的包含一组元素的集合:其特点是长度和内容都可以改变.可以理解为java中的链表数组. 2.python中分割列表用什么方式? L = [0, False, 'l','AA','BBB'] print L[1:],L[:1],L[1:2],L[-1] 3.python中怎么进行多行注释? 采用三个单引号或者双引号括起来,如: def foo()

python web框架企业实战详解(第六期)\第二课时-pickle&amp;__eq__

1.python的值传递和引用传递区别,哪些类型值传,哪些是引用传递? 值传递和引用传递区别:依据对象是否可变来确定 和其他语言不一样,传递参数的时候,python不允许程序员选择采用传值还是传引用.Python参数传递采用的肯定是"传对象引用"的方式.实际上,这种方式相当于传值和传引用的一种综合.如果函数收到的是一个可变对象(比如字典或者列表)的引用,就能修改对象的原始值--相当于通过"传引用"来传递对象.如果函数收到的是一个不可变对象(比如数字.字符或者元组)的

python django框架学习笔记(三)--大结局

一.数据库同步操作技巧 1.认识一个目录 目录名:migatations 作用,用来存放通过makemigrations命令生成的数据库脚本.app目录下必须要有migrations目录切目录下必须要有__init__.py才能正常的使用数据库同步功能. 2.认识一张数据表(django_migrations) 表中的字段: app:app名字 name:脚本的文件名称 applied:脚本执行时间 3.数据库相关的命令 flush:清空数据库-恢复数据库到最初的状态 makemigration

python web框架企业实战详解(第六期)\第三课时-css&amp;bootstrap

raw css: <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> <style type="text/css"> p.ex1 { font:italic arial,sans-serif; } p.ex2 { font:italic bold 12px/3