路由URL和视图函数的基本使用
-
在Django中的应用
pythonfrom django.shortcuts import HttpResponse def hello(request): return HttpResponse("Hello World!") urlpatterns = [ path('admin/', admin.site.urls), path('hello/', hello), ] -
视图函数一般都不写在urls.py中,需要单独配置在各自的模块里面
路由URL的不同传参方式如何使用
-
查询字符串方式
bashhttp://localhost:8000/courseQuery/?search=Pythonjavascriptfrom django.contrib import admin from django.urls import path from course import views urlpatterns = [ path('admin/', admin.site.urls), path('courseQuery/', views.course_query) ]pythonfrom django.shortcuts import HttpResponse def course_query(request): # search = request.GET['search'] search = request.GET.get('search') return HttpResponse(f'你查找的是{search}课程') -
path中携带
bashhttp://localhost:8000/coursePath/Python/javascriptfrom django.contrib import admin from django.urls import path from videoListPage import views urlpatterns = [ path('admin/', admin.site.urls), path('coursePath/<search>/', views.course_path) ]pythonfrom django.shortcuts import HttpResponse def course_path(request, search): return HttpResponse(f'你查找的是{search}课程')
path函数的用法
-
path函数
sqlpath(route, view, kwargs=None, name=None)- route:一个字符串,表示URL模式。它可以包含文字字符和转换器(如 int:year)的混合,用于匹配URL的特定部分,并将这些部分作为参数传递给视图。
- view:当URL与模式匹配时,Django将调用的视图函数或视图类的引用。
- kwargs(可选):一个字典,包含要传递给视图函数的关键字参数。这些参数在URL匹配时不会从URL中动态提取,而是直接作为静态值传递给视图。
- name(可选):一个字符串,用于给URL命名。这个名称在Django项目中是唯一的,并且可以在项目的其他地方(如模板和重定向)通过 reverse 函数引用。
-
转换器的使用
-
在
route字符串中,你可以使用尖括号(<>)来定义转换器,这些转换器可以匹配URL的某一部分,并将其作为参数传递给视图。Django提供了多种内置转换器,如:str:匹配任何非空字符串,但不包含斜杠(/)。这是默认的转换器。int:匹配零或任何正整数。slug:匹配由字母、数字、下划线 _ 或连字符 - 组成的字符串(通常用于URL的友好部分)。uuid:匹配格式化的UUID。
pythonfrom django.urls import path from course import views urlpatterns = [ path('coursePath/<search>/', views.course_path), # 默认str path('courseYear/', views.course_year, {'year': 2026}, name='course_year'), # 静态 path('courseYear/<int:year>/', views.course_year, name='course_year'), # 动态 path('courseSlug/<slug:search>/', views.course_sluf, name='course_slug'), # slug ] -
路由的模块化
-
路由模块化
-
将项目中的URL路由分配到不同的应用(app)中,从而实现代码的模块化和可维护性
python3 manage.py startapp course
-
-
课程模块
-
对于每个Django应用,通常会在其目录下创建一个
urls.py文件来定义该应用的路由,这个文件的结构与项目根目录下的urls.py文件类似,都包含一个urlpatterns列表inifrom django.urls import path from . import views # 模块名字 app_name = 'course' urlpatterns = [ path('list/', views.course_list, name='course_list'), path('detail/', views.course_detail, name='course_detail'), ]
-
-
路由总入口
-
项目根目录下的
urls.py文件负责将请求分发到各个应用的urls.py文件中。这通过django.urls.include函数实现,该函数允许将某个URL前缀下的所有路由包含进来。javascriptfrom django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), path('course/', include('course.urls', namespace='course')), ]
-
路由反转
-
在项目的不同部分(如视图、模板等)中动态地生成URL,而无需硬编码URL字符串,这大大提高了项目的可维护性和可扩展性
-
通过路由名字得到url
-
一般是通过url来去访问视图函数,得到对应的页面,现在可以通过反转用名字得到url
scss// 基本 reverse('login') /loginscss// 有命名空间 reverse('course:course_list') /loginlua// path携带参数 reverse('course:course_detail',kwargs={'id': 1}) /login/1bash// 查询字符串参数 reverse('logout') + '?id=1' /logout?id=1
-