首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么Django 3.0.6使用url()函数而不是path()函数生成urlpattern变量

Django 3.0.6使用url()函数而不是path()函数生成urlpattern变量的原因是为了向后兼容旧版本的Django。

在Django 2.0之前的版本中,我们使用url()函数来定义URL模式。这个函数接受一个正则表达式模式和一个视图函数作为参数,并将它们绑定在一起。这种方式在旧版本中非常常见,并且在很多项目中仍然被广泛使用。

然而,从Django 2.0开始,path()函数被引入作为更简洁和易读的替代方案。path()函数接受一个字符串模式和一个视图函数,并将它们绑定在一起。相比于正则表达式,字符串模式更易于理解和编写,使得URL配置更加清晰和简洁。

尽管path()函数在新版本中更受欢迎,但为了保持向后兼容性,Django仍然保留了url()函数。这样一来,旧版本的项目可以无需修改代码,直接升级到新版本的Django。

总结起来,Django 3.0.6使用url()函数而不是path()函数生成urlpattern变量是为了向后兼容旧版本的Django,以便旧版本的项目可以平滑升级到新版本。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Django 笔记-2-源码理解-urls 篇

之前我能只理解了如何使用 Django urls 模块中的方法生成满足业务需求的路由,但是我还真没研究过怎么收集现有路由,并进行遍历和反向解析,于是便有了此次源码阅读。...本文以 Django 初始化和请求流程为主线,研究在这个过程中 Django 的 urls 模块做了哪些工作,并不是详细讲解 urls 模块下的全部方法。...resolver 是 # URLResolver(RegexPattern(r'^/'), settings.ROOT_URLCONF) # 从函数调用上我们还可以发现,Django 使用 functools.lru_cache...(pattern, LocalePrefixPattern): # 这里为什么对 LocalePrefixPattern 报错我不是很理解一下是 AI 给出的回答:...# 因此,为了遵循最佳实践并确保代码的清晰性, # Django限制了i18n_patterns的使用范围,只允许在主URL配置中使用

11910
  • 使用wsgiref库diy简单web架构

    了解CGI和WSGI (1)CGI   CGI(Common Gateway Interface)通用网关接口,即接口协议,前端向服务器发送一个URL(携带请求类型、参数、cookie等信息)请求,服务器把这个请求的各种参数写进进程的环境变量...,比如 REQUEST_METHOD,PATH_INFO之类的,然后开启 cgi模块以后,将其发送给CGI程序,CGI程序(可以由各种语言编写,比如C、C ++、VB 和Delphi 等)从环境变量中解析出各种参数...2. wsgiref库简介   wsgiref是python内置库,实现了一个简单的WSGI Server和WSGI Application,使用该库我们将很容易实现自定义的web架构不用考虑TCP/...DIY web架构   模仿django架构的model—->route—->view—>template模型实现http请求,显示网页 (1)models.py   使用redis的创建两个字符串结构...= conn.get('name') self.url = conn.get('url') (2)urls.py import views urlpattern = ((r'/fate0729

    59740

    Django 笔记-1-从请求到响应

    Django 自带的的 Web Server,而在正式的环境中,一般会使用 Nginx+uWSGI 模式。...细则: 重要函数源码位置: _path: django/urls/conf.py URLPattern: django/urls/resolvers.py ResolverMatch: django/...通过 urlpatterns 的配置执行 _path 函数; _path 函数进行判断:如果是一个 list 或者 tuple,就用 URLResolver 处理,跳至 4;如果是一个正常的可调用的 view...; URLResolver 匹配 path 如果匹配成功,则继续匹配它的 url_patterns,跳至 5;匹配失败,抛出异常; 匹配 url_patterns:若为 urlpattern 匹配成功,...; URLResolver 是实现 url 路由,解析 url 的关键的地方,它的 url_patterns既可以是URLPattern 也可以是 URLResolver,正是因为这种设计, 实现了对

    86721

    Django学习-第二讲 DjangoURL与视图

    2.URL映射 也就是我们访问网站时url地址的生成规则,django读取url的配置信息根据 settings.py 中的: ROOT_URLCONF 配置项的内容来读取url映射信息: ?...在urls.py文件中有一个urlpatterns变量,以后django就会从这个变量中读取所有的匹配规则。...匹配规则需要使用django.urls.path函数进行包裹,这个函数会根据传入的参数返回URLPattern或者是URLResolver的对象。...那么如何在django中实现这种需求呢。 第一种:这时候我们可以在path函数中,使用尖括号的形式来定义一个参数。...因此django给我们提供了一个方法,可以在app内部包含自己的url匹配规则,而在项目的urls.py中再统一包含这个app的urls。使用这个技术需要借助include函数

    1.1K10

    Django基础教程

    3 不需要添加一个前导的反斜杠,因为每个URL 都有。例如,应该是^articles 不是 ^/articles。 4 每个正则表达式前面的'r' 是可选的但是建议加上。...P[0-9]{2})/$', views.article_detail), ] 这个实现与前面的示例完全相同,只有一个细微的差别:捕获的值作为关键字参数不是位置参数传递给视图函数。...django.conf.urls.url()函数可以接受一个可选的第三个参数,它是一个字典,表示想要传递给视图函数的额外关键字参数。...你可以对那些不同 的代码段进行定义,不是 共同 代码段。 第一步是定义 基础模板,该框架之后将由子模板所继承。 以下是我们目前所讲述范例的基础模板: <!...如果只想在上级代码块基础上添加内容,不是全部重载,该变量就显得非常有用了。 不允许在同一个模板中定义多个同名的 {% block %} 。

    7.4K20

    Pycharm开发Django项目URL分发器

    在urls.py文件中有一个urlpatterns变量,以后django就会从这个变量中读取所有的匹配规则。...匹配规则需要使用django.urls.path函数进行包裹,这个函数会根据传入的参数返回URLPattern或者是URLResolver的对象。...那么如何在django中实现这种需求呢。这时候我们可以在path函数中,使用尖括号的形式来定义一个参数。比如我现在想要获取一本书籍的详细信息,那么应该在url中指定这个参数。...因此django给我们提供了一个方法,可以在app内部包含自己的url匹配规则,而在项目的urls.py中再统一包含这个app的urls。使用这个技术需要借助include函数。...re_path函数: 有时候我们在写url匹配的时候,想要写使用正则表达式来实现一些复杂的需求,那么这时候我们可以使用re_path来实现。

    78910

    Django相关知识点回顾

    2.web框架程序进行路由分发(根据url找到对应的处理函数)。 3.调用web框架程序的处理函数中进行业务的处理。 4.web服务器组织响应报文,返回内容给客户端。...from django.conf.urls import url from users import views urlpatterns = [ # url('url正则表达式','对应视图函数...urlpattern = [ url(r'^demo/$', my_cecorate(DemoView.as_view())) ] 2.使用Django框架提供的method_decorator...flask:SQLAlchemy django:自带ORM框架,可以直接进行使用 13.2Django和Flask模板区别 13.2.1模板变量 {{ 模板变量 }} a) Django使用模板变量时,...{{ 模板变量|过滤器(参数...)}} b) Django中模板过滤器的使用 {{ 模板变量|过滤器:参数 }} 注意:Django过滤器 :之后只能接收一个参数 13.3步骤 13.3.1数据库连接配置

    10K51

    Django 学习笔记 1.3 视图和模板

    Django 将会根据用户请求的 URL 来选择使用哪个视图(更准确的说,是根据 URL 中域名之后的部分)。 为了将 URL 和视图关联起来,Django 使用了 ‘URLconfs’ 来配置。...你的视图可以从数据库里读取记录,可以使用一个模板引擎(比如 Django 自带的,或者其他第三方的),可以生成一个 PDF 文件,可以输出一个 XML,创建一个 ZIP 文件,你可以做任何你想做的事 3.1...get_object_or_404() 不是自己捕获 ObjectDoesNotExist 异常呢?...然而,因为你在 polls.urls 的 url() 函数中通过 name 参数为 URL 定义了名字,你可以使用 {% url %} 标签代替它: <a href="{% <em>url</em> 'detail...在模版<em>使用</em>时,有三点细节需要记忆下: 1.<em>变量</em>访问。

    1.2K20

    Python+Django+MySQL实现基于Web版的增删改查的示例代码

    前言 本篇使用Python Web框架Django连接和操作MySQL数据库学生信息管理系统(SMS),主要包含对学生信息增删改查功能,旨在快速入门Python Web,少走弯路。...开发环境 开发工具:Pycharm 2020.1 开发语言:Python 3.8.0 Web框架:Django 3.0.6 数据库:MySQL5.7 操作系统:Windows 10 项目实战 1....import path from django.conf.urls import url, include urlpatterns = [ path('admin/', admin.site.urls...), url(r'^add/$', views.add), url(r'^edit/$', views.edit), url(r'^delete/$', views.delete) ] 7.处理函数添加...(V) 在应用sims的视图层文件views.py添加对应学生信息增删改查的处理函数,这里我使用的原生SQL,便于深入理解其执行过程。

    4.8K20

    Django快速入门——投票程序(3)视图

    Django将会根据用户请求的URL来选择使用哪个视图。为了将URL和视图关联起来,Django使用了URLconfs将URL模式映射到视图。...这就是为什么尽管我们没有像在第二部分中那样修改 DIRS 设置,Django 也能正确找到 polls 的模板位置的原因。...模板命名空间 虽然我们现在可以将模板文件直接放在 polls/templates 文件夹中(不是再建立一个 polls 子文件夹),但是这样做不太好。...一个快捷函数:render() 「载入模板,填充上下文,再返回由它生成的 HttpResponse 对象」是一个非常常用的操作流程。...使用模板系统 回过头去看看我们的detail()视图。它向模板传递了上下文变量 question 。

    23820

    知了超细讲解Django打造大型企业官网学习记录,02diango url 笔记

    #url传递参数: ##url映射 1.为什么会去urls.py文件中寻找映射呢?...2.在'urls.py'中我们所有的映射,都应该放在'urlpatterns'这个变量中。 3.所有的映射不是随便写的,而是使用'path'函数或者是're_path'函数进行包装的。...##url传参数 1.采用在url使用变量的方式: 在path的第一个参数中,使用''的方式可以传递参数。...p\d{2})/$',views.article_list_month) ] ''' 4.如果不是特别要求,直接使用'path'就够了,省的把代码搞得很麻烦(因为正则表达式其实是非常隐晦的...如果访问blog/1的时候,因为在穿递参数的时候穿递了num,因此会匹配到第二个url,这时候也会执行view.page,然后把穿递进来的参数传给page函数中的num。

    88630

    Django--admin源码流程

    _registry[model] = admin_class(model, self) register函数第一个参数是注册的模块名称,第二个参数不传默认是None,但是实际使用的是ModelAdmin...@property装饰器装饰为属性,urls属性返回的是一个元组【元组的第一个元素是列表,由get_urls函数返回】 get_urls函数中定义了一个urlpatterns并最终返回,里面有url路径和视图函数的对应关系...1 url(r'^admin/', admin.site.urls) 会找到注册的admin类,为每一个类生成N个URL(如上urlpattern中定义的) 如果用户自己注册的模块,如下 ?..._meta.model_name 代表model对应的表的小写名,比如userinfo 这样就生成了/app01/userinfo/ 这样的url前缀。...urlpatterns【这也是django admin为什么注册了一个类之后就为这个类提供了基本url函数映射的基本原因】,这样和上面形成的url路径拼接即可得到如下的效果 urlpatterns =

    96980

    celery(macos) - redis(centos) - celery(macos)

    celery实例方法task 封装 任务函数 在主机上的pycharm,用celery封装了个 函数send_register_active_emai....---- 把pycharm的一个Django项目(此项目 使用pycharm建的虚拟环境 -- 即是 项目目录下的venv),拷贝到新的虚拟环境下(作为,任务处理者worker): dailyfresh...("DJANGO_SETTINGS_MODULE", "dailyfresh.settings") django.setup() ---- 把pycharm的一个Django项目(此项目 使用pycharm...正确的方式是: 使用pycharm打开 新虚拟环境下的 项目 修改项目下的urls.py中的urlpattern, 在其中,添加apps. re_path(r'^order/', include('order.urls...', namespace='order')), # 订单模块 改后 如下: re_path(r'^order/', include('apps.order.urls', namespace='order

    1.3K30

    Django的路由控制

    不需要添加一个前导的反斜杠,因为每个URL 都有。例如,应该是^articles 不是 ^/articles。 每个正则表达式前面的'r' 是可选的但是建议加上。...使用有名分组,可以解决上面,因为视图函数,参数位置变动导致页面显示混乱的情况。...P[0-9]{2})/$', views.article_detail), ] 这个实现与前面的示例完全相同,只有一个细微的差别:捕获的值作为关键字参数不是位置参数传递给视图函数。...例如: /articles/2005/03/ 请求将调用views.month_archive(request, year='2005', month='03')函数不是 views.month_archive...反向解析 在使用Django 项目时,一个常见的需求是获得URL 的最终形式,以用于嵌入到生成的内容中(视图中和显示给用户的URL等)或者用于处理服务器端的导航(重定向等)。

    2.8K20
    领券