zengxuejie

导航

Python Web开发学习-Django(5)获取URL的中的数据

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,附加值无需输入,会直接带出来。

使用带默认值的参数

  1. 可在视图函数中定义带有默认值的参数。
  2. 要调用带默认值参数的视图函数,可在URL模式中定义带参数的不带参数的两种URL偶人来映射视图函数。
  3. 当访问不带参数的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

关注个人公众号:测试开发进阶之路

  

posted on 2020-11-23 10:10  曾小懒  阅读(518)  评论(0编辑  收藏  举报