Django中的几种url路由形式以及视图函数接收参数的方式

1、直接在浏览器的url后,使用?和&符号拼接参数,视图函数应如何接收参数?

  path('args/', views.params_first),

接收方式:
其中的’user’和’pwd’是可以随意定义的,但是要注意数量上的对应

 def params_first(request):
	    user_name = request.GET.get('user', '')
	    pass_word = request.GET.get('pwd', '')
	    result = '账号:{},密码:{}'.format(user_name, pass_word)
	    return HttpResponse(result)

2、参数不在以?的形式进行拼接,而是以路径(/a/a/a)的形式传递的,视图函数应如何接收参数?

# /(\d+)/(\w+)/就是给视图函数传递的两个参数。
# 视图函数想要接收,在函数中必须声明两个形参(形参的名称可以任意设定)来接收这两个参数。
# re_path(r'^params/(\d+)/(\w+)/$', views.params),
# \d{2}:表示匹配两位数字
re_path(r'^params/(\d{2})/(\w+)/$', views.params),
# 将re_path转化成path()的写法:
# 视图函数接收参数,params1必须接收两个形参(形参的名称必须和路由中指定的参数名称保持一致)
# <>:是用来匹配参数的。
# <>中的参数是可以指定转换器,转换器的作用就是对拦截到的参数进行转化再传递给视图函数,比如类型的转化,值的转化等。
# 默认转化器是str
path('params1/<str:username>/<int:password>', views.params1),

接收方式:

def params(request, name, pwd):
    result = 'name={}, pwd={}'.format(name, pwd)
    return HttpResponse(result)

def params1(request, username, username):
	# 此方法中的变量(username, username)必须要和urls.py文件中定义的名字一样
    print(type(password))
    result = 'name={}, pwd={}'.format(username, password)
    return HttpResponse(result)

3、path()函数除了上述将参数直接以路径的形式传递给视图函数,也可以采用如下方法传递参数。

#params2()需要设置形参,形参的名称和字典的键保持一致。
path('params2/', views.params2, {'user': '张三',  'pwd': '5423'}),

接收方式:

def params2(request, user, pwd):
    result = 'name==={}, pwd==={}'.format(user, pwd)
    return HttpResponse(result)

4、re_path()这种url路由,如何制定参数的名称。而上面的re_path中,参数的名称可以任意设定。

# ?P:是制定参数名称的固定格式。
# <id>、<username>就是形参的名称,此时视图函数params3()的形参必须和id、username保持一致。
# <id>\d+:表示\d+将匹配到的数字参数,赋值给形参id。
# <username>\w+:表示\w+将匹配到的字符参数,赋值给形参username。
re_path(r'^params3/(?P<id>\d+)/(?P<username>\w+)/$', views.params3)

接收方式:

def params3(request, id, username):
    print('++++++', request)
    result = 'id={}, name={}'.format(id, username)
    return HttpResponse(result)
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值