django notes 二:URL dispatcher

一般在 settings.py 中会有一个  ROOT_URLCONF ,请求到来时 django 会从 ROOT_URLCONF 指向的文件中查找  urlpatterns 变量配置的路由。

urlpatterns 中还可以 include 其它 model 中的 urlpatterns, django 会从上到下一个一个查找,看 url 是否匹配。 匹配后就交给对应的 view 处理了。

urlpatterns = [
    url(r‘^admin/‘, include(admin.site.urls)),
    url(r‘^index/$‘, view_index),
    url(r‘^blog/‘, include(blog_urls)),
]

url 中的非命名捕获组在 view 中以位置参数接收, 其实接收的是元组,你用  *args 接收是一样的, 元组会自动解包到对应的位置

urlpatterns = [
    url(r‘^articles/([0-9]{4})/$‘, views.year_archive),
    url(r‘^articles/([0-9]{4})/([0-9]{2})/$‘, views.month_archive),
]
def month_archive(request, year, month):
    pass

命名捕获组以关键字参数接收, 其实接收的是一个字典,字典会自动解包到对应的字段中,你用 **kw 接收然后自己解也是一样的

urlpatterns = [
    url(r‘^articles/(?P<year>[0-9]{4})/$‘, views.year_archive),
    url(r‘^articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/$‘, views.month_archive),
]
def month_archive(request, year, month):
    pass

所有的参数都以字符串来接收,不论你正则中的类型是什么  (Captured arguments are always strings)

这个地方在开发中遇到好几回坑,后台rpc接口接收的是整形,而我传的是字符串,导致排序不正确,还以为是rpc接口有问题,水平太菜。

重写默认的 404 500 界面,  只要在 ROOT_URLCONF 中给 django.conf.urls.handler404 赋值一个自定义 view 就行了

django.conf.urls.handler404 = view_404
django.conf.urls.handler500 = view_500

Reverse url , 要 reverse 得先给 url  起个名字

非命名参数 reverse

urlpatterns = [
    url(r‘^articles/([0-9]{4})/$‘, view_articles, name=‘article‘)
]

print(reverse(‘article‘, args=(2015,)))

命名参数 reverse

def view_articles(request, year):
    return HttpResponse(content=‘hello world‘)

urlpatterns = [
    url(r‘^articles/(?P<year>[0-9]{4})/$‘, view_articles, name=‘article‘)
]

print(reverse(‘article‘, kwargs={‘year‘: 2018}))
时间: 2024-10-24 19:04:14

django notes 二:URL dispatcher的相关文章

Django基础二之URL路由系统

一 URL配置 Django 1.11版本 URLConf官方文档 URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表.你就是以这种方式告诉Django,对于这个URL调用这段代码,对于那个URL调用那段代码. 基本格式  from django.conf.urls import url #循环urlpatterns,找到对应的函数执行,匹配上一个路径就找到对应的函数执行,就不再往下循环了,并给函数传一个参数request,和

02.Django基础二之URL路由系统

一 URL配置 Django 1.11版本 URLConf官方文档 URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表.你就是以这种方式告诉Django,对于这个URL调用这段代码,对于那个URL调用那段代码. 基本格式 from django.conf.urls import url #循环urlpatterns,找到对应的函数执行,匹配上一个路径就找到对应的函数执行,就不再往下循环了,并给函数传一个参数request,和w

Django框架(二)

一:Django项目创建步骤: 方式1:命令创建: 进入指定目录 C:\Users\bing>F: F:\>cd mysite F:\mysite>django-admin startproject mysite F:\mysite>python manage.py startapp app01 F:\mysite>python manage.py startapp app02 F:\mysite>python manage.py startapp app03(一个Dj

Django 框架篇: 一. Django介绍; 二. 安装; 三. 创建项目;

一. web框架:   框架,即framework,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构,使用框架可以帮你快速开发特定的系统,简单地说,就是你用别人搭建好的舞台来做表演. 对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. import socket def handle_request(client): buf = client.recv(1024) client.send("HTTP/1.1 200 OK\r\n\r\

Django中的URL配置和模板

Django中的URL配置 : 实例: Python代码   urlpatterns = patterns('', # Example: # (r'^myweb/', include('myweb.foo.urls')), # Uncomment the admin/doc line below and add 'django.contrib.admindocs' # to INSTALLED_APPS to enable admin documentation: # (r'^admin/doc

django笔记(二)

Model many-to-many可以通过through来定义详细信息. 表结构: property django笔记(二),布布扣,bubuko.com

使用URL dispatcher的范例

在上面的一篇文章中,我们介绍了怎样使用URL disptacher.在这篇文章中.我们来通过一个范例更进一步来了解怎样实现它. 1)创建一个具有URL dispatcher的应用 我们首先打开我们的SDK,然后创建一个最主要的QML template应用.我们把该应用叫做"MyApp".我们首先在"MyApp"的根文件夹加入一个文件叫做"MyApp.url-dispatcher"文件.这里面的内容例如以下: [ { "protocol&

使用Ubuntu OS上的URL dispatcher来启动其它的应用

URL dispatcher 是在Ubuntu OS上的一个服务.它可以让我们的应用(confined,i.e, click package应用)来启动其它的应用.这些应用通常是一个特别的URL来 识别的.可能最常见的例子就是向网页浏览器发送http:// URL来启动网页浏览器,但是像music或其它的应用也可以支持.对于大多数的应用来说,这是一个最有用的方式来退出现有的应用来启动另外一个应用. 对于Qt应用来说,它访问URL dispatcher的方法是通过Qt的desktop plugin

python 3.5 django 笔记(二)Tmeplates与models

回顾上节课的三条经典命令 django-admin startproject 项目名称 #建立项目 python manage.py startapp blog #建立项目内站点 python manage.py runserver #启动服务 #runserver后面可以带端口号,表示运行是的端口 Tmeplates: (图片转载至幕课) 在昨天的myblog\blog下简历templates文件夹 结构树 myblog | |-----blog |    | |    |-----templ