浏览器传参,子路由,CBV

浏览器传参,子路由,CBV

浏览器向后端传递数据

第一种方式:普通传参(不常用)

  • 浏览器中输入数据

  • 配置路由中定义参数接收数据

urlpatterns = [
    path('admin/', admin.site.urls),
    path("demo/<name>/",demo),	# <name>:参数,接收数据
    							# 若数据是整数的话,需要加上int转换为整型  例:<int:num>
]
  • 在视图函数中也需要传参
from django.http import HttpResponse

def demo(request,name):		# name:参数,注意:这里的参数名必须要和路由中的参数名保持一致	
    # 打印一下这个参数,看是否和浏览器输入的数据一致
    print(name)		
    # 将参数再返回到浏览器中
    return HttpResponse(name)

第二种方式:利用get方式获取(常用)

  • 浏览器中输入数据

    ​ **注意:输入的格式,?键名=值 (键名:参数名 值:**数据)

    若是两个参数的话需要用 & 来连接 例如:name=迪丽热巴 &age=29

  • 在视图函数中接收数据

    def demo2(request):
        # 接收数据,参数名要和浏览器中的参数名一致
        name=request.GET.get('name')
        # 将参数再返回到浏览器中
        return HttpResponse(name)
    

    ​ 区别:与第一种方式不同,这种方式不需要再配置路由中接收数据

子路由与主路由

​ 子路由和主路由介绍:子应用中是没有子路由的,需要提前将主路由复制到子应用中变为子路由

​ 在主路由中关联子路由

# 在配置子路由前需要导一个include包
from django.urls import path,include

from users.views import *

urlpatterns = [
    path('admin/', admin.site.urls),

    # 配置users子应用的子路由
    path("users/",include("users.urls"))
]

# 若是关联上了子路由,主路由中可以不用写那么多路由,全在对应的子路由中写就可以

​ 子路由配置该子应用中的视图函数

from django.contrib import admin
from django.urls import path

from users.views import *

urlpatterns = [
    # 和主路由中一样写
    path("demo2/", demo2),
]

​ 注意:如果是在子路由中配置路由,在浏览器中需要加上子应用的名字

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uRjrDGak-1612188331764)(D:\作业\python\P4\笔记\image\day02\子路由访问浏览器.PNG)]

FBV和CBV
  • 基于函数的视图,被称为 FBV(不常用)

    def demo2(request):
        return HttpResponse("FBV")
    
    urlpatterns = [
        path("demo2/", demo2),
    ]
    
  • 基于类的视图,别称为CBV(常用)

# 用CBV的方式需要先导包
from django.views import View

# CBV(常用):以类的方式存在
class demo3(View):		# View:参数,固定的
    # 需要用get请求的方式
    def get(self,request):	
        # 和FBV一样传参,接收参数
        name1=request.GET.get("name1")
        return HttpResponse(name1)
    
    
# 用CBV可以定义多个def,实现多个效果
    
urlpatterns = [
    # CBV的配置路由   
    path("demo3/",demo3.as_view())
    #.as_view():是固定的不可改变  针对不同的请求方式,分发到 视图的具体方法中
]

```python
urlpatterns = [
    # CBV的配置路由   
    path("demo3/",demo3.as_view())
    #.as_view():是固定的不可改变  针对不同的请求方式,分发到 视图的具体方法中
]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值