Django中视图和URL中的常用方法

目录

path方法

re_path()

reverse方法

render方法

render_to_response方法

get_object_or_404方法

get_list_or_404方法


path方法

path(routeviewkwargs=Nonename=None)

  • route参数是一个字符串,表示URL,包含一个 URL 模式。这个字符串来捕获 URL 的一部分,并将其作为关键字参数发送给视图。
  • view参数是一个视图函数,用于基于类的视图。
  • kwargs参数允许你向视图函数或方法传递附加参数
  • name参数则可以为这个URL起一个名字

route参数和view参数是必填的,作用是捕捉符合route参数中的URL,如果符合,这叫由view参数中的视图函数处理。

path方法定义于django/urls/conf.py文件中,在使用之前需要先导入Django.urls文件才能使用

re_path()

path方法类似,不过route参数可以是一个正则表达式进行匹配。就不过多写了。

path方法定义于django/urls/conf.py文件中,在使用之前需要先导入Django.urls文件才能使用

reverse方法

由于URL可能随着业务调整发生变化,因此将URL硬编码到代码中并不友好。Django为了解决这个问题,提供了URL反向解析的方法,通过给URL模式命名即可反向解析得到完整的URL。

reverse(viewname, urlconf=None, args=None, kwargs=None, current_app=None)

  • viewname:必填参数,它可以是URL模式的名字,即name所指定的名称;也可以是可调用的视图对象,
  • urlconf:这个属性用于决定当前的反向解析使用哪个URLconf模块,默认是根URLconf。
  • args:它用于传递参数,可以是元组或者列表,顺序填充URL中的位置参数。
  • kwargs:它与args一样,也用于传递参数;但它是字典类型的,使用关键字指定参数和数值。需要注意,args与kwargs不可以同时出现。
  • current_app:它指示当前执行的视图所属的应用程序。

path方法定义于django/urls/conf.py文件中,在使用之前需要先导入Django.urls文件才能使用

render方法

这个方法将给定的模板和上下文字典组合,渲染返回一个HttpResponse对象。

render(requesttemplate_namecontext=无content_type=无、status=无using=无)

  • request:HttpRequest对象,即视图函数的第一个参数。一般都会request
  • template_name:可以是字符串或字符串列表。字符串代表模板的完整路径;如果是列表,则按顺序找到第一个存在的模板。
  • context:默认是一个空字典,可以通过传递它渲染模板。
  • content_type:生成文档的MIME类型,默认为DEFAULT_CONTENT_TYPE设定的值。
  • status:响应状态码,默认为200。
  • using:用于指定加载模板的模板引擎。

render_to_response方法

这个方法的功能与render是一样的,根据一个给定的上下文字典渲染模板并返回HttpResponse。

render(requesttemplate_namecontext=无content_type=无、status=无using=无)

与render方法的区别是不需要传递request参数,其他都是相同的。由于没有传递request,因此其在模板中的使用会受到一定的限制,如不能直接通过request对象获取它的相关属性。所以,如果需要在模板中使用request,应该使用render,而不是render_to_response。另外,Django在源码中给出了提示,这个方法可能在将来被废弃,所以,在应用开发中首先考虑使用render方法。

get_object_or_404方法

这个方法通过Model对象的get方法获取实例对象,但是当实例不存在的时候,它会捕获DoesNotExist异常,并返回404响应。

get_object_or_404(klass, *args, **kwargs)

  • klass:从中获取对象的modle类,Managr,或QuerySet实例。
  • *args和**kwargs:查询参数,应采用 和 接受的格式。get()filter()

get_list_or_404方法

用来获取Model实例对象的列表,当获取的结果为空时,返回404响应。

接受的参数与get_object_or_404是一样的,只是在做匹配时使用filter方法而不是get方法。

get_object_or_404和get_list_or_404常常用于不考虑“兼容”的场景中,即匹配不到实例对象就返回找不到资源(404)。这两个方法会比自己去查询校验并返回404响应要简单很多,所以,如果需要这样的场景,就首先考虑使用它们。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

HHYZBC

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

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

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

打赏作者

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

抵扣说明:

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

余额充值