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. 小程序——阿里服务器配置https及什么是IIS

    1.申请域名:阿里云 2.免费开启SSL证书:管理=>免费开启SSL证书>单域名>dev.xxx.top 3.配置服务器:下载=>IIS7证书 *注册一个域名,可以免费开启一个 ...

  2. 有关python2与python3中关于除的不同

    有关python2与python3中关于除的不同 python中2版本与3版本关于除的处理还是有一些差异的. 在python 2.7.15中除(/)是向下取整的,即去尾法. 123/10 # 结果 1 ...

  3. 【学习总结】GirlsInAI ML-diary day-15-读/写txt文件

    [学习总结]GirlsInAI ML-diary 总 原博github链接-day15 认识读/写txt文件 路径: 绝对路径:文件在电脑中的位置 相对路径:下面会用到 1-准备 新建一个 pytho ...

  4. STS启动springboot项目,加载不了resources下的配置文件的问题

    从这篇博客的评论中找到了解决方案 答案: eclipse的设置中,它默认是不包括resources下的文件的,把它改了就行了 原本用idea没这些事的,不过idea旗舰版到期了,社区版的话,对前端又没 ...

  5. 清明培训 清北学堂 DAY2

    今天是钟皓曦老师的讲授~~ 总结了一下今天的内容: 数论!!! 1.整除性 2.质数 定义: 性质:  3.整数分解定理——算数基本定理 证明: 存在性: 设N是最小不满足唯一分解定理的整数 (1)  ...

  6. Vim和Neovim安装YouCompleteMe

    确定支持Python,Vim一般支持,Neovim默认不支持 Vim的就不介绍方法了,很多系统都不一样.Neovim添加Python支持 pip install setuptools pip inst ...

  7. (转)Spring事务管理详解

    背景:之前一直在学习数据库中的相关事务,而忽略了spring中的事务配置,在阿里面试时候基本是惨败,这里做一个总结. 可能是最漂亮的Spring事务管理详解 https://github.com/Sn ...

  8. com.android.support:appcompat-v7:27.+问题解决

    新建的项目就报下面的错误,问题指向了app/build.gradle,看起来是版本兼容的问题.     解决方案: 1.查看sdk tools的版本:26.1.1   远程依赖包是27.+,而我们的s ...

  9. node安装express-generator脚手架

    参考网址:https://www.jianshu.com/p/b555ba6f4067 全局安装: npm install express-generator -g 创建项目pro_test expr ...

  10. EM算法(Expectation Maximization Algorithm)初探

    1. 通过一个简单的例子直观上理解EM的核心思想 0x1: 问题背景 假设现在有两枚硬币Coin_a和Coin_b,随机抛掷后正面朝上/反面朝上的概率分别是 Coin_a:P1:-P1 Coin_b: ...