Django学习笔记——url与视图

视图函数

  1. 视图函数的第一个参数必须是request。
  2. 视图函数的返回值必须是HttpResponseBase的子类对象。

URL与视图的映射

  1. 在setting.py中配置了’ROOT_URLCONF’为‘urls.py’,所以Django收到请求会去’urls.py’中寻找。

  2. 在‘urls.py’中应把所有映射放在‘urlpatterns’变量中。

  3. 所有的映射使用’path’或者’re_path’函数进行包装的。

  4. path中映射的视图函数不能加()。

URL中添加变量参数

  1. 第一种方式:在path中使用<数据类型:变量名>为URL添加参数,视图中函数的形参名一定要与变量名相同,可传递多个参数。默认数据类型有:
    str : 非空字符串类型。默认转换器。不能包含斜杠。
    int :任意非负的整形。
    slug:由英文中的 - ,或者下划线连接的字符串。
    uuid:匹配uuid字符串。
    path:匹配非空的英文字符串,可包含斜杠。
    需要加头文件
import django.urls import converters
  1. 第二种方式:查询字符串方式,url末尾使用**?‘变量名’=‘变量’** 的格式,在path中不需要添加,但在视图函数中要使用request.GET.get(‘变量名’)获取变量。

URL模块化

  1. 增加头文件
    from django.urls import include
  2. 在工程文件下的urls.py中只需要写出不同app所对应的url的开头,在path中使用include(‘app下urls.py的路径’),在app下的urls.py中只需要写出后半部分的url进行匹配。可以看作将两级拼接。

url的命名

  1. url经常变化,给url命名,方便页面重定向,并且如果要使用url时可通过名字进行反转操作,要使用redirect(),需要
from django.shortcuts import redirect
  1. 在path函数中,传入name=‘命名’
  2. 应用命名空间:为了避免一个工程里一个名字重复为url命名,在app的urls.py中添加app_name=‘名字’,在进行反转时使用reverse(‘命名空间名字:url的名字’)。要使用reverse()需要
from django.shortcuts import reverse
  1. 实例命名空间:针对主urls.py中不同的url对应相同app下的urls.py,可以给每个url命名,方法为在include函数中添加’ namespace=‘实例名’ ',在视图函数中如果要reverse()可以使用
request.resolver_match.namespace 获取实例命名

include()补充

  1. include(module,namespace=None):
    module:子url的模块字符串
    namespace:实例命名空间。如果要指定实例命名空间,就要先指定应用命名空间。

  2. include((pattern_list,app_namespace),namespace=None):

    pattern_list:可以是一个字符串,也可以是一个元组,如果是元组第一个参数是子urls.py模块路径的字串,第二个参数是应用命名空间。

  3. include(pattern_list)
    pattern_list:是一个列表,这个列表装的是’path‘或者’re_path‘函数,

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值