Django路由详解

一、Django路由怎么写

Django路由的编写是在项目的urls.py文件中进行的,该文件中包含了整个项目的路由配置信息。路由的格式为:path(route, view, kwargs=None, name=None)。
其中route参数表示匹配的URL路径,view参数表示该路径下对应的视图函数,kwargs参数可选,是一个字典类型的参数,可以包含任意个关键字参数,作为视图函数的参数传递;name参数可选,用于给URL定义一个名称,以便在Django的其他地方使用,比如在模板中构造URL。

二、Django路由配置叫什么名字

Django路由配置文件通常被命名为urls.py,可以位于项目的根目录或者应用程序的子目录中。在应用程序的子目录中可以创建一个名为urls.py的文件来包含该应用程序的所有路由。

三、Django路由配置了但跳转不了

若Django路由配置了但跳转不了,常见的原因是没有在视图函数中返回HttpResponse或者render函数的调用。另外,一定要确保路径匹配正确,包含斜杠或者没有斜杠在Django路由匹配中是有区别的。

四、Django路由path

在Django 2.0之后,引入了path方法,替代了以前的re_path和url方法,具有更加简洁明了的特点。使用path方法可以直接匹配URL路径,不需要正则表达式。
示例代码:

from django.urls import path
from . import views

urlpatterns = [
    path('article//', views.article_year),
]

五、Django路由正则

Django路由使用正则表达式匹配URL,常用的正则表达式如下:
\d 匹配任意数字
\w 匹配任意数字/字母/下划线
\+ 匹配左侧的字符出现一次或多次
* 匹配左侧的字符出现0次或多次
? 匹配左侧的字符出现0次或1次
() 用来标记一个组的开始和结束位置
示例代码:

from django.urls import re_path
from . import views

urlpatterns = [
    re_path(r'^articles/(?P\d{4})/', views.article_year),
    re_path(r'^articles/(?P\w+)/', views.article_name),
]

六、Django路由配置

Django路由配置是指在urls.py文件中配置路由,以映射URL到视图函数。通常路由配置会组成一个列表(英文名称为urlpatterns),在Django的启动时就会被加载并使用。当请求到来时,Django会按照 urlpatterns 列表的顺序从上到下匹配 URL,使用第一个能够匹配的视图函数作为响应。
例如:

from django.urls import path
from . import views

urlpatterns = [
    path('article//', views.article_year),
    path('article//', views.article_slug),
]

七、Django路由权限

Django路由权限指的是对路由设置权限,只有拥有相应权限的用户才能访问。举个例子,在路由中添加login_required装饰器可以让用户必须登录才能访问:
示例代码:

from django.urls import path
from django.contrib.auth.decorators import login_required
from . import views

app_name = 'blog'
urlpatterns = [
    path('', views.index, name='index'),
    path('/', login_required(views.ArticleDetailView.as_view()), name='detail'),
]

八、Django路由参数

Django路由参数指的是在URL中加入参数,用于调用视图函数或者完成其他操作。Django支持两种类型的参数:位置参数和关键字参数。位置参数使用?P进行定义,关键字参数使用?P<name=value>进行定义,参数名称与参数值用=分开。
示例代码:

from django.urls import path
from . import views

app_name = 'blog'
urlpatterns = [
    path('search/', views.search, name='search'),
    path('article//', views.article_year),
    path('article//', views.article_slug),
    path('login/', views.login, name='login'),
]

九、Django路由匹配原则

Django路由匹配原则遵循的是“先匹配长的一项”。如下所示,Django路由会优先匹配第2个路由,因为它的匹配规则比第1个路由匹配更长。

from django.urls import path
from . import views

urlpatterns = [
    path('article//', views.article_year),
    path('article//', views.article_slug),
]

十、Django路由转换器

Django路由转换器是指变量,允许精细控制Django路由系统的匹配。转换器在路由中用一对<angle brackets>括起来,如:<int:year>、<slug:slug>。常用的转换器类型包括:str、int、slug、uuid、path和custom。如果需要自定义转换器可以通过继承Converter类来实现。

参考代码

from django.urls import path, re_path
from . import views

app_name = 'blog'
urlpatterns = [
    path('', views.index, name='index'),

    path('search/', views.search, name='search'),
    path('tags/', views.TagListView.as_view(), name='tag_list'),
    
    path('article//', views.ArticleDetailView.as_view(), name='detail'),
    path('article//edit/', views.ArticleUpdateView.as_view(), name='edit'),
    path('article//delete/', views.ArticleDeleteView.as_view(), name='delete'),

    path('write/article/new/', views.ArticleCreateView.as_view(), name='create_article'),

    path('about/', views.about, name='about'),
    path('contact/', views.contact, name='contact'),

    re_path(r'^articles/(?P\d{4})/', views.article_year),
    re_path(r'^articles/(?P\w+)/', views.article_slug),
]

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/199583.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-05 10:22
下一篇 2024-12-05 10:25

相关推荐

  • Django ORM如何实现或的条件查询

    在我们使用Django进行数据库操作的时候,查询条件往往不止一个,一个好的查询语句需要考虑我们的查询要求以及业务场景。在实际工作中,我们经常需要使用或的条件进行查询,本文将详细介绍…

    编程 2025-04-29
  • Django项目中执行Python脚本

    本文将阐述在Django项目中如何执行Python脚本以及执行脚本的几种方式。 一、subprocess模块执行Python脚本 subprocess模块提供了一个简单的接口用于创…

    编程 2025-04-27
  • 神经网络代码详解

    神经网络作为一种人工智能技术,被广泛应用于语音识别、图像识别、自然语言处理等领域。而神经网络的模型编写,离不开代码。本文将从多个方面详细阐述神经网络模型编写的代码技术。 一、神经网…

    编程 2025-04-25
  • Linux sync详解

    一、sync概述 sync是Linux中一个非常重要的命令,它可以将文件系统缓存中的内容,强制写入磁盘中。在执行sync之前,所有的文件系统更新将不会立即写入磁盘,而是先缓存在内存…

    编程 2025-04-25
  • git config user.name的详解

    一、为什么要使用git config user.name? git是一个非常流行的分布式版本控制系统,很多程序员都会用到它。在使用git commit提交代码时,需要记录commi…

    编程 2025-04-25
  • C语言贪吃蛇详解

    一、数据结构和算法 C语言贪吃蛇主要运用了以下数据结构和算法: 1. 链表 typedef struct body { int x; int y; struct body *nex…

    编程 2025-04-25
  • Python安装OS库详解

    一、OS简介 OS库是Python标准库的一部分,它提供了跨平台的操作系统功能,使得Python可以进行文件操作、进程管理、环境变量读取等系统级操作。 OS库中包含了大量的文件和目…

    编程 2025-04-25
  • MPU6050工作原理详解

    一、什么是MPU6050 MPU6050是一种六轴惯性传感器,能够同时测量加速度和角速度。它由三个传感器组成:一个三轴加速度计和一个三轴陀螺仪。这个组合提供了非常精细的姿态解算,其…

    编程 2025-04-25
  • Python输入输出详解

    一、文件读写 Python中文件的读写操作是必不可少的基本技能之一。读写文件分别使用open()函数中的’r’和’w’参数,读取文件…

    编程 2025-04-25
  • Linux修改文件名命令详解

    在Linux系统中,修改文件名是一个很常见的操作。Linux提供了多种方式来修改文件名,这篇文章将介绍Linux修改文件名的详细操作。 一、mv命令 mv命令是Linux下的常用命…

    编程 2025-04-25

发表回复

登录后才能评论