URL参数传递
Django在执行URL解析时,可将URL路径的一部分解析为数据,将其作为参数传递给视图函数。
实例演示
views.py文件代码:
from django.http import HttpResponse def getDate(request,urlDate): return HttpResponse("Url获取到的参数是:"+ urlDate)
urls.py文件代码:
from django.contrib import admin from django.urls import path from .import views urlpatterns = [ path('<urlDate>',views.getDate), ]
浏览器输入:http://127.0.0.1:8000/abc123
代码分析:
views.py文件内的urlDate就是指的参数abc123
urls.py文件内的urlDate就是views.py文件的函数,用于接收URL路径中的数据。
正则表达式参数传递
实例演示
views.py文件代码:
from django.http import HttpResponse def getDateRe(request,data): return HttpResponse("正则表达式Url获取到的参数是:%s" % (data))
urls.py文件代码:
from django.contrib import admin from django.urls import path from django.urls import re_path from .import views urlpatterns = [ re_path(r'^lujing/(?P<data>[a-z0-9]+)$', views.getDateRe), ]
代码分析:正则表达式需要使用“re_path”,lujing指的是路径
例如运行项目之后,在浏览器里输入:http://127.0.0.1:8000/lujing/adb456
运行结果:
传递附加数据
path(route,view,kwargs=None,name=None),第三个参数就是用于视图函数传递附加数据的,附加数据是字典的形式。
实例演示:
views.py文件代码:
from django.http import HttpResponse def getDateEx(request,data,ex): return HttpResponse("Url的参数是%s,附加数据是:%s" % (data,ex))
data是参数的值,ex就是你自己定义的附加的数据
urls.py文件代码:
from django.contrib import admin from django.urls import path from django.urls import re_path from .import views urlpatterns = [ path('extra/<data>',views.getDateEx,{"ex":"123"}), ]
path('extra/<data>',views.getDateEx,{"ex":"123"}),ex后面的值就是附加值123
浏览器输入:http://127.0.0.1:8000/extra/abc,附加值无需输入,会直接带出来。
使用带默认值的参数
- 可在视图函数中定义带有默认值的参数。
- 要调用带默认值参数的视图函数,可在URL模式中定义带参数的不带参数的两种URL偶人来映射视图函数。
- 当访问不带参数的URL时,即可使用参数的默认值。
实例演示
views.py文件代码:
from django.http import HttpResponse def getDateDefault(request,data='abc'): return HttpResponse("Url的默认值参数是abc,当前传入的参数是%s," % data)
urls.py文件代码:
from django.contrib import admin from django.urls import path from django.urls import re_path from .import views urlpatterns = [ path('default',views.getDateDefault), #不带参数时会读取 path('default/<data>',views.getDateDefault),#带参数时会读取 ]
浏览器先输入不带参数的:http://127.0.0.1:8000/default
浏览器输入带参数的:http://127.0.0.1:8000/default/12345
关注个人公众号:测试开发进阶之路