1 路由的基本使用:

# url是个函数,有四个参数,第一个参数要传正则表达式,第二参数传函数内存地址,第三个参数传默认参数,第四个是路由的别名
url(r'^liuqingzheng/article/aa.html$', views.test),
-路由从上往下匹配,一旦匹配成功,后面就不继续匹配了

2 路由的无名分组

url(r'^test2/(\d+)/(\w+)$', views.test2),
无名分组分出几个值,视图函数就要接受几个值(位置参数形式传过来的)

写一个无名分组路由,请求格式为:article/2018/12,在浏览器界面显示:您要查看2018年12月的文章

url(r'^article/(\d+)/(\d+)$', app01_views.wuming),
def wuming(request,year,month):
print(year,month)
return HttpResponse('您要查看%s年%s月的文章' %(year,month))

3 路由的有名分组

url(r'^test3/(?P<id>\d+)/(?P<name>\w+)$', views.test3),
有名分组分出几个值,视图函数就要接受几个值(按关键字传入,位置可以打乱)

写一个有名分组路由,请求格式为:user/lqz,在浏览器界面显示:您要查看名字为lqz该人的信息

url(r'^user/(?P<name>\w+)$', app01_views.youming),
def youming(request,name):
print(name)
return HttpResponse('您要查看名字为%s该人的信息' %(name))

4 有名和无名不能混着用

5 在settings中配置(以后项目,一般不用动)

# 默认是true,浏览器浏览的时候,默认加上斜杠
# 如果是False,浏览器默认不会加/
# APPEND_SLASH=False

6 路由分发

1 导入include
-from django.conf.urls import include
2 在主路由中:
url(r'^app01/', include('app01.urls')),
url(r'^app02/', include('app02.urls')),
3 在不同app中新建一个urls
from app01 import views
urlpatterns = [
url(r'^test/', views.test),
]
4 如果浏览器输入app01/test/,就会响应到app01下views中的test取执行

-新建app01,app02,
# -当用户访问app01/test/ 响应到app01的视图函数test
# -当用户访问app02/test/ 响应到app02的视图函数test
url(r'^app01/',include('app0108.urls')),
url(r'^app02/',include('app02.urls'))

7 反向解析:

干什么用?
-在视图函数中重定向的地址原来是写死的,如果url地址变更,我需要所有的url都修改,很麻烦,所有可以通过反向解析,获得url的地址
如何使用:
-路由层:
url(r'^test_2/$', views.test2,name='test2'),
-视图层:
from django.shortcuts import reverse
url=reverse('url地址的别名')
#如果做了分组
url=reverse('url地址的别名',args=[],kwargs={})
-模板层:
{% url 'url地址的别名'%}
#如果做了分组
{% url 'url地址的别名' 参数1 参数2%}

 # 1 当访问'/user/'路径时,重定向到'/userlist/'页面
# 2 当访问'/user/?id=10'路径时,重定向到'/userlist/10'页面
url(r'user/$',app01_views.user),
url(r'userlist/(\d+)?$',app01_views.userlist,name='userlist'),
# 3 在模板(html中)层通过反向解析,解析出'userlist/10'的的地址
url(r'^test$', app01_views.test),
def user(request):
id = request.GET.get('id')
print(id)
if id:
url=reverse('userlist',args=(id,))
else:
url=reverse('userlist')
print(url)
return redirect(url) def userlist(request,id):
if id:
return HttpResponse('userlist:%s的页面' % (id))
return HttpResponse('userlist ok') def test(request):
return render(request,'test.html')
<body>
<p>app1-test</p>
<a href="{% url 'userlist' '10' %}">userlist</a>
</body>

8 名称空间

-路由分发时,可以指定名称空间:
-url(r'^app01/', include('app01.urls',namespace='app01')),
-url(r'^app02/', include('app02.urls',namespace='app02')),

-在视图中反向解析:
url=reverse('app01:test')
-在模板中反向解析:
{% url 'app01:url地址的别名'%}
-个人不建议这么使用:
在不同app的urls中起别名的时候,添加:app名_别名

9 django 2.0的path,re_path(了解)

-1.几的url就是2.几的re_path
-2.0的path 第一个参数不再是正则表达式
-5个转换器:int,str,slug,path,uuid

10 自定义转换器(了解):

-1 写一个类:
class MyCon:
regex = '[0-9]{4}'
def to_python(self, value):
return int(value)
def to_url(self, value):
return '%04d' % value
-2 在urls中:
-from django.urls import register_converter
-register_converter(类名,'别名')

-path('test/<别名:year>', views.test,name='year'),

TTL

Python-Django 路由控制器的更多相关文章

  1. python - django (路由)

    # """ # Django路由分配系统简介: Django project目录中的urls.py文件中, 以Python [ ( ) ]的数据类型记录了可以访问到该站点 ...

  2. python django 路由系统

    URL配置                        基本格式: from django.conf.urls import url urlpatterns = [ url(正则表达式, views ...

  3. Python Django 路由分发

    mysite1 为一个django工程 cmdb为一个项目 dashboard为一个项目 在mysite1工程下的urls.py中定义如下: from django.conf.urls import ...

  4. python Django 路由之正则表达式

    一.路由系统,URL 1. url(r'^index',views.index) #默认的                  url(r'^home',views.Home.as_view()) # ...

  5. Python菜鸟之路:Django 路由、模板、Model(ORM)

    Django路由系统 Django的路由系统让Django可以根据URI进行匹配,进而发送至特定的函数去处理用户请求.有点类似nginx的location功能. Django的路由关系分为三种:普通关 ...

  6. Python菜鸟之路:Django 路由补充1:FBV和CBV - 补充2:url默认参数

    一.FBV和CBV 在Python菜鸟之路:Django 路由.模板.Model(ORM)一节中,已经介绍了几种路由的写法及对应关系,那种写法可以称之为FBV: function base view ...

  7. 【python】-- Django路由系统(网址关系映射)、视图、模板

    Django路由系统(网址关系映射).视图.模板 一.路由系统(网址关系映射) 1.单一路由对应: 一个url对应一个视图函数(类) urls.py: url(r'^test', views.test ...

  8. Python学习---Django路由系统【all】

    Django URL (路由系统) Django URL (路由系统): URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL模式以及要为该URL模式调用的视图函数之间的映 ...

  9. Django路由系统

    django路由系统 简而言之,django的路由系统作用就是使views里面处理数据的函数与请求的url建立映射关系.使请求到来之后,根据urls.py里的关系条目,去查找到与请求对应的处理方法,从 ...

  10. python Django知识点总结

    python Django知识点总结 一.Django创建项目: CMD 终端:Django_admin startproject sitename(文件名) 其他常用命令: 其他常用命令: 通过类创 ...

随机推荐

  1. Jenkins下载历史Build版本的归档文件

    /root/.jenkins/jobs/zgg-crm-pre/builds//com.zgg$crm/archive/com.zgg/crm/0.0.1/crm-0.0.1.war https:// ...

  2. Web并发页面访问量统计实现

    Web并发页面访问量统计实现 - huangshulang1234的博客 - CSDN博客https://blog.csdn.net/huangshulang1234/article/details/ ...

  3. Vue之状态管理(vuex)与接口调用

    Vue之状态管理(vuex)与接口调用 一,介绍与需求 1.1,介绍 1,状态管理(vuex) Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态 ...

  4. JAVA多线程-内存模型、三大特性、线程池

    一.线程的三大特性 原子性.可见性.有序性 1)原子性,即一个操作或者多个操作要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行.原子性其实就是保证数据一致.线程安全一部分. 2)可见性,即 ...

  5. spring cloud实战与思考(二) 微服务之间通过fiegn上传一组文件(上)

    需求场景: 微服务之间调用接口一次性上传多个文件. 上传文件的同时附带其他参数. 多个文件能有效的区分开,以便进行不同处理. Spring cloud的微服务之间接口调用使用Feign.原装的Feig ...

  6. 爬虫简介与request模块

    一 爬虫简介 概述 近年来,随着网络应用的逐渐扩展和深入,如何高效的获取网上数据成为了无数公司和个人的追求,在大数据时代,谁掌握了更多的数据,谁就可以获得更高的利益,而网络爬虫是其中最为常用的一种从网 ...

  7. 使用with语句优化pymysql的操作

    一.with语句的好处 with语句的好处在于,它可以自动帮我们释放上下文,就比如文件句柄的操作,如果你不使用with语句操作,你要先open一个文件句柄,使用完毕后要close这个文件句柄,而使用w ...

  8. python中self和cls的区别

    1.self表示一个具体的实例本身.如果用了staticmethod,那么就可以无视这个self,将这个方法当成一个普通的函数使用. 2.cls表示这个类本身. >>> class ...

  9. BZOJ4621 Tc605(动态规划)

    容易发现最终序列所有数字的相对顺序不变,一个数字可能的覆盖范围由两边第一个比它大的数决定,且若不考虑次数限制所有这样的序列都可以变换得到.对于一个序列,其需要的最少变换次数显然就是覆盖了别的位置的数的 ...

  10. Magento2 API 服务合同设计模式 依赖注入 介绍

    公共接口和API 什么是公共界面? 一个公共接口是一组代码,第三方开发者可以调用,实现或构建一个 插件 .Magento保证在没有重大版本更改的情况下,此代码在后续版本中不会更改. 模块的公共接口 标 ...