Django2.1路由传递参数

2022-06-18 12:06:20

1、先创建项目(django-admin startproject djangourlparams)和app应用(pythonmanage.py startapp app名称)
2、在urlparams中创建urls.py文件。
在这里插入图片描述
3、在入口urls.py文件(即和项目settings.py文件保持一致的)写入如下
在这里插入图片描述

第一种
1、在urlparams下的urls.py文件中,写入。
在这里插入图片描述

from django.urls import path
from urlparams import views
urlpatterns=[
    path('args/',views.params_first),
]

from urlparams时需先设置项目搜索根目录。在项目根目录上右键→mark Directory as→Source root即可。
在这里插入图片描述
4、在urlparams下的views文件中写入
在这里插入图片描述

from django.http import HttpResponse
def params_first(request):
    #针对路由的第一种情况,直接从GET请求中获取参数。
    user_name=request.GET.get('user','')
    pass_word=request.GET.get('pwd','')
    result='账号:{},密码:{}'.format(user_name,pass_word)
    return HttpResponse(result)

5、此时运行(pythonmanage.py runserver)项目。在浏览器中输入127.0.0.1:8000/args/?user=张飒&pwd=123 然后运行,此时浏览器就会显示如下图所示:
在这里插入图片描述

第二种:
1、参数不再以?形式进行拼接,而是以路径/a/a的形式进行传递的。
2、此时在urlparams的urls.py文件中的urlpatterns中写入:re_path(r’^params/(\w+)/(\d+)/$’,views.params)
在这里插入图片描述

注: /(\d+)/(\w+)/ 就是给视图函数传递的两个参数。
注:视图函数如何接收,在函数中必须声明两个形参(形参名称可以任意设定)来接收这两个参数。

3、在urlparams的views.py文件中中写入:
在这里插入图片描述

4、此时浏览器中运行可以得到:
在这里插入图片描述

5、#将re_path转化为path()的写法

re_path(r'^params/(\w+)/(\d+)/$',views.params),
#将re_path转化为path()的写法:
#视图函数接收参数,params1必须声明两个形参(形参的名称必须和路由中指定的参数名称保持一致)。
path('params1/<username>/<password>/',views.params1)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
备注

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

第三种
1、path()函数除了上述将参数直接以路径的形式传递给视图参数,也可以采用如下方法传递参数。
在urlparams下的urls.py文件中写入如下路由:

path('params2/',views.params2,{'user':'李四','pwd':'123'}),

注:params2()需要设置形参,形参的名字和字典的键保持一致。

2、然后我们在views.py文件中实现params2这个函数。

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

在这里插入图片描述
3、此时打开浏览器进行访问127.0.0.1:8000/params2/即可看到如下图所示:

在这里插入图片描述

第四种
1、re_path()这种url路由,如何指定参数名称。而上面的re_path中,参数的名称可以任意设定。
2、现在我们在urlparams下的urls.py文件中写入re_path(r’^params3/(?P\w+)/(?P\d+)/$’, views.params3),

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

3、此时在views.py中实现下
在这里插入图片描述

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

4、打开浏览器进行访问。
在这里插入图片描述

1、先创建项目(django-admin startproject djangourlparams)和app应用(pythonmanage.py startapp app名称)
2、在urlparams中创建urls.py文件。
在这里插入图片描述
3、在入口urls.py文件(即和项目settings.py文件保持一致的)写入如下
在这里插入图片描述

第一种
1、在urlparams下的urls.py文件中,写入。
在这里插入图片描述

from django.urls import path
from urlparams import views
urlpatterns=[
    path('args/',views.params_first),
]

from urlparams时需先设置项目搜索根目录。在项目根目录上右键→mark Directory as→Source root即可。
在这里插入图片描述
4、在urlparams下的views文件中写入
在这里插入图片描述

from django.http import HttpResponse
def params_first(request):
    #针对路由的第一种情况,直接从GET请求中获取参数。
    user_name=request.GET.get('user','')
    pass_word=request.GET.get('pwd','')
    result='账号:{},密码:{}'.format(user_name,pass_word)
    return HttpResponse(result)

5、此时运行(pythonmanage.py runserver)项目。在浏览器中输入127.0.0.1:8000/args/?user=张飒&pwd=123 然后运行,此时浏览器就会显示如下图所示:
在这里插入图片描述

第二种:
1、参数不再以?形式进行拼接,而是以路径/a/a的形式进行传递的。
2、此时在urlparams的urls.py文件中的urlpatterns中写入:re_path(r’^params/(\w+)/(\d+)/$’,views.params)
在这里插入图片描述

注: /(\d+)/(\w+)/ 就是给视图函数传递的两个参数。
注:视图函数如何接收,在函数中必须声明两个形参(形参名称可以任意设定)来接收这两个参数。

3、在urlparams的views.py文件中中写入:
在这里插入图片描述

4、此时浏览器中运行可以得到:
在这里插入图片描述

5、#将re_path转化为path()的写法

re_path(r'^params/(\w+)/(\d+)/$',views.params),
#将re_path转化为path()的写法:
#视图函数接收参数,params1必须声明两个形参(形参的名称必须和路由中指定的参数名称保持一致)。
path('params1/<username>/<password>/',views.params1)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
备注

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

第三种
1、path()函数除了上述将参数直接以路径的形式传递给视图参数,也可以采用如下方法传递参数。
在urlparams下的urls.py文件中写入如下路由:

path('params2/',views.params2,{'user':'李四','pwd':'123'}),

注:params2()需要设置形参,形参的名字和字典的键保持一致。

2、然后我们在views.py文件中实现params2这个函数。

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

在这里插入图片描述
3、此时打开浏览器进行访问127.0.0.1:8000/params2/即可看到如下图所示:

在这里插入图片描述

第四种
1、re_path()这种url路由,如何指定参数名称。而上面的re_path中,参数的名称可以任意设定。
2、现在我们在urlparams下的urls.py文件中写入re_path(r’^params3/(?P\w+)/(?P\d+)/$’, views.params3),

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

3、此时在views.py中实现下
在这里插入图片描述

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

4、打开浏览器进行访问。
在这里插入图片描述

  • 作者:lucky__peng
  • 原文链接:https://blog.csdn.net/lucky__peng/article/details/123034467
    更新时间:2022-06-18 12:06:20