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. BS架构和CS架构的区别

    C/S架构的优缺点: *优点: 1.客户端因为是独立设计,所以可以实现个性化 2.因为客户端是需要进行安装的,可以不需要重复安装和加载 3.因为客户端是独立开发的,所以有能力对客户端进行安全设计 4. ...

  2. ExcelDna项目完整工程演示及讲解

    原始链接:http://www.cnblogs.com/Charltsing/p/ExcelDnaDemo.html ExcelDna工程演示讲课内容 1.ExcelDna是啥? 2.ExcelDna ...

  3. red()、redinle()、redlines()三者之间的关系

    # 关于read()方法: # 1.读取整个文件,将文件内容放到一个字符串变量中 # 2.如果文件大于可用内存,不可能使用这种处理 file_object = open("a.txt&quo ...

  4. object.observe被废弃了怎么办

    用新的 Proxy 具体见:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Proxy

  5. Amazon SNS (Simple Notification Service) Using C# and Visual Studio

    SNS (Amazon Simple Notification Services) Amazon SNS (Amazon Simple Notification Services) is a noti ...

  6. python学习day11 函数Ⅲ (内置函数与lambda表达式)

    函数Ⅲ(内置函数&lambda表达式) 1.函数小高级 函数可以当做变量来使用: def func(): print(123) func_list = [func, func, func] # ...

  7. Error: Can't resolve 'babel-loader'

    在控制台中运行命令“webpack”,出现错误:“ERROR in Entry module not found: Error: Can't resolve 'babel-loader' in.... ...

  8. django系列 2 :启动应用,目录结构解读

    来源:https://docs.djangoproject.com/en/2.1/intro/tutorial01/ 该教程是创建一个用于投票的网页. 1.使用命令创建site 进入要创建site的目 ...

  9. FreeNAS系统总结

    FreeNAS简介 FreeNAS是一套免费的NAS服务器,它能将一部普通PC变成网络存储服务器.该软件基于FreeBSD,Samba 及PHP,支持CIFS (samba), FTP, NFS pr ...

  10. Pandas系列(四)-文本数据处理

    内容目录 1. 为什么要用str属性 2. 替换和分割 3. 提取子串 3.1 提取第一个匹配的子串 3.2 匹配所有子串 3.3 测试是否包含子串 3.4 生成哑变量 3.5 方法摘要 一.为什么要 ...