分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 教程案例

django-urls(路由)

发布时间:2023-09-06 02:12责任编辑:赖小花关键词:urldjango

Django的路由入口是urls.pyurlpatterns参数。
通过查找urlpatterns中的对应关系分发请求到各个视图函数或类。

一、分发请求到函数
1、应在对应app的views.py中定义好处理函数,如:

1 def business_new(request):2 ????return HttpResponse("Django")

2、在urls.py中导入对应的模块

1 from app1 import views

3、在urlpatterns中加入对应关系

1 path(‘app1/‘,views.business_new)  #fbv  function base view

二、分发请求到类
1、应在对应app的views.py中定义好处理类,如:

 1 from django.views import View 2 class Blog(View): ??#应继承View 3 ????def dispatch(self, request, *args, **kwargs): 4 ????????print("before") 5 ????????result = super(Blog,self).dispatch(request, *args, **kwargs) ??#根据请求方式分发 6 ????????print("after") 7 ????????return result 8 ?9 ????def get(self,request):10 ????????return HttpResponse("BLOG")11 12 ????def post(self,request):13 ????????pass

2、在urls.py中导入对应的模块

1 from app1 import views

3、在urlpatterns中加入对应关系

1 path(‘blog/‘,views.Blog.as_view()), ????#CBV ???class base view

三、路由的特殊写法
1、使用正则,如:

1 re_path(‘article-(\d+)-(\d+)/‘,views.article)2 re_path(‘article-(?P<article_type_id>\d+)-(?P<category_id>\d+)/‘,views.article)  #分组

可同过形如:address/article-1-2 的方式访问
方法二会将1传给article_type_id,2传给category_id

使用正则时应导入re_path方法

1 from django.urls import path,re_path

2、name属性,如

1 re_path(‘article-(?P<article_type_id>\d+)-(?P<category_id>\d+)/‘,views.article,name=‘article‘)

设置该属性后可以通过reverse方法反向生成url,如:

1 file: views.py2 from django.shortcuts import reverse3 def article(request,**kwargs):4 ????......5 ????url = reverse(‘article‘,kwargs=kwargs)6 ????????print(url)7 ????......

3、分发到app的urls,如:

1 from django.urls import path,include #导入include2 3 urlpatterns = [4 ????path(‘admin/‘, admin.site.urls),5 ????path(‘app1/‘,include(‘app1.url‘))6 ]

此时访问形如 address/app1/XXX 的url时会进入app1 -> url.py 中查找urlpatterns

django-urls(路由)

原文地址:https://www.cnblogs.com/baird/p/9542586.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved