一、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