慕课网-Django入门到进阶-更适合Python小白的系统课程-第2章Django中的路由与视图-2-2url参数设置

第2章 Django中的路由与视图

2-2 url参数设置

url 中的参数

1.在 url 后边用 ? 开始,键与值用等号连接,每对键值用&号区分,如:http://127.0.0.1:8000/app?name=dewei&age=30

2.在路由的参数中用分隔符分开,如:http://127.0.0.1:8000/app/dewei/30

django2 的 url 变量类型

1.字符串类型:匹配任何非空字符串,但不包括斜杠,在不指定类型的前提下,默认字符串类型<str:name>

2.整型:匹配 0 和正整数<int:age>

3.slug:可理解为注释,后缀或附属等概念<slug:day>

4.uuid:匹配一个 uuid 格式的对象<uuid:uid>类似xxx-xx-xx

支持 url 类型的方法

1.from django.urls import path 2.0 以后新方法

2.from django.conf.urls import url 2.0 以前方法,不支持参数中的类型,只能通过正则表达的方式进行基本匹配

Django 2.0 以前 url 参数匹配简介

1.url(r'^add/(?P<name>\w+)/(?P<age>\d+)$')

2.r 非转义原始字符串

3.w+ 匹配1个或多个包括下划线在内的任何字字符:[A-Za-z0-9]

4.d+ 匹配1个或多个数字

为 url 设置别名

1.path('add', view_function, name='add')

2.别名可以在重定向和模板定义的时候直接用别名替代,具体方法会在 template 模板课程中具体讲解

视图读取参数

1.?形式的参数->request.GET.get(参数名)

2.以分隔符形式的参数

3.def index(request, 参数名, 参数名):

    print(参数名)

 

实例

1.进入项目下目录 two,修改文件 views.py

#coding:utf-8
from django.http import HttpResponse

def index(request):
    name = request.GET.get('name', '')
    age = request.GET.get('age', 0)
    return HttpResponse('hello, i am {0}, age is {1}'.format(name, age))

2.看测试效果

3.换一种方式,进入项目下目录 app,修改文件 urls.py,源代码是 1.0 之前的,现在改成 2.0 的

#coding:utf-8
from django.urls import path
from .views import index

urlpatterns = {
    path('<str:name>/<int:age>', index)
}

4.进入项目下目录 two,修改文件 views.py

#coding:utf-8
from django.http import HttpResponse

def index(request, name, age):
    return HttpResponse('hello, i am {0}, age is {1}'.format(name, age))

5.看测试效果

6.进入项目下目录 app,修改文件 urls.py,添加别名

#coding:utf-8
from django.urls import path
from .views import index

urlpatterns = {
    path('<str:name>/<int:age>', index, name = 'index')
}

  

posted on 2020-01-08 11:48  herisson_pan  阅读(18)  评论(0)    收藏  举报

导航