View层:传参方法
?传参方法
在url后面使用?表示参数,如下:
http://127.0.0.1:8000/?name=klay&age=18
使用方法:
在View视图层使用request.GET.get(arg1,arg2)函数接受参数
Arg1表示参数名字,arg2表示默认值,如果在url处没有传入值,则在django逻辑中设置arg2为默认值
在two应用下对应的view层编写以下代码:
-untitled0
-two
views.py
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))
同时在urls中配置url对应的逻辑:
-untitled0
-two
urls.py
from django.conf.urls import url
from .views import index
urlpatterns = [
url(‘’, index)
]
同时在项目里面配置该应用的url
-untitled0
-untitled0
urls.py
from django.contrib import admin
from django.urls import path, include
from two import urls as app_urls
urlpatterns = [
path(‘admin/‘, admin.site.urls),
path(‘’, include(app_urls))
]
把项目run起来,在浏览器输入以下url:
http://127.0.0.1:8000/app/?name=klay&age=18
就可以看到成功打印出一句话:
Hello I am klay, age is 18
/ 传参方法
除了以上在url后使用?传参数,还可以使用/进行参数的传递,规则如下:
http://127.0.0.1:8000/app/klay/30
在使用/识别之前,我们需要了解在django中变量是如何匹配的:
- 字符串类型str:name:可以匹配任何非空的字符串(不包括斜杠)
- 整型int:age:匹配0和正整数
- Slugslug:day:匹配注释
- Uuiduuid:uid:匹配一个uuid,格式为xxx-xxx-xxx
我们还是使用之前的匹配方法,但是我们需要修改我们的代码逻辑
在two应用下对应的view层修改原来的代码:
我们在定义函数的时候加多两个参数为name和age,现在我们就不需要使用request.GET去获取参数了,而是使用url处的匹配
-untitled0
-two
views.py
def index(request,name,age):
return HttpResponse(‘Hello I am {0}, age is {1}’.format(name,age))
我们在urls文件中修改逻辑,使用django.urls下的path而不是urls
-untitled0
-two
urls.py
from django.urls import path
from .views import index
urlpatterns = [
path('<str:name>/<int:age>', index)
]
现在我们使用http://127.0.0.1:8000/app/klay/18 就会显示出一样的参数匹配结果
Hello I am klay, age is 18