Python笔记之Django传参(斜线后面半部分传参)

Django路由与视图参数传递
本文详细介绍了Django框架中如何通过总路由配置,传递动态参数至视图函数,示例展示了如何使用正则表达式匹配URL中的特定部分,并将其作为参数传入视图。通过具体代码实例,讲解了参数名在urls.py与views.py中的一致性要求,以及如何正确设置和接收这些参数。

接上一篇博客【Python笔记之Django初体验2】

本例是通过总路由,传递部分只变化部分的参数,

比如http://127.0.0.1:8000/book/page-*/ ,变化部分仅仅是*的位置,星号代表本例的书的页码号。

一、总路由/urls.py的写法:

url(r'^book/(?:page-(?P<xpagenumber>\d+)/)$', tv.do_param2),   再次提醒,xpagenumber为视图函数里的参数名,本文件/urls.py和app下的views中do_param2方法传递的参数名必须完全一致,因为本身路由调用的就是views中的方法,参数名不一样必然出错。

from django.contrib import admin
from django.urls import path
from django.conf.urls import url, include
from teacher import views as tv, teacher_url

urlpatterns = [
    path('admin/', admin.site.urls),
    url(r'^normalmap', tv.do_normalmap),
    url(r'^withparam/(?P<year>[0-9]{4})/(?P<month>[0,1][0-9])', tv.withparam),
    url(r'^teacher/', include(teacher_url)),
    url(r'^book/(?:page-(?P<xpagenumber>\d+)/)$', tv.do_param2),
]

二、App视图/teacher/views.py的写法:

定义方法

   def do_param2(request, xpagenumber):
         return HttpResponse("page number is {0}".format(xpagenumber))

from django.shortcuts import render
from django.http import HttpResponse

# Create your views here.


def do_normalmap(request):
    return HttpResponse('Hello X World')


def withparam(request, year, month):
    return HttpResponse('This is with param {0},{1}'.format(year, month))


def do_app(request):
    return HttpResponse('这是子路由显示出来的内容')


def do_param2(request, xpagenumber):
    return HttpResponse("page number is {0}".format(xpagenumber))

三、注意,本例没有用到子路由。请仔细看总路由没有用到include。不要搞糊涂了。

四、打开URL看效果:

启动Django的web服务器,D:\ProgramCode\Python\test002\Xdjango>python manage.py runserver回车。

http://127.0.0.1:8000/book/page-100/ 输出结果为:page number is 37213690

http://127.0.0.1:8000/book/page-13671/输出结果为:page number is 13671

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

潇洒哥Kahn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值