首页 > 其他分享 >Django路由层

Django路由层

时间:2024-03-19 09:03:06浏览次数:20  
标签:匹配 视图 Django re 分组 字符串 路由

mysqlclient

项目同名文件夹下__init__.py这个文件中添加以下两句话:(数据库8.0时,进行数据库迁移时报错为2026的解决方法)
import pymysql
pymysql.install_as_MySQLdb()

在这里插入图片描述
在这里插入图片描述

路由层
path(路由, 视图函数, 别名)

关于url后面加/的问题:有时候你没有加/,django也会自动帮你加上/去匹配

取消自动加/

在settings.py中加上
APPEND_SLASH = False # 默认是自动加斜杆的
re_path(reg, view, name)
reg:正则表示式
正则表达式命名分组模式(?Ppattern)
,匹配提取参数后用关键字传参方式传递给视图函数

正则表达式是一个特殊的字符序列,能够帮助你检查一个字符串是否与某种模式匹配
:匹配字符串的开头’1’
$:匹配字符串的末尾
[…]:用来表达一组字符

re模块是python提供正则表达式功能的
re.match(匹配的正则, 字符串,)
span():查询匹配到的字符串的索引
re.match(‘www’, ‘www.baidu.com’).span()
re.search(匹配的正则, 字符串)
match和search的区别:match只会匹配字符串的开始,如果开始不符合则匹配失败.search匹配整个字符串
compile():用于编译正则表达式的,生成一个正则表达式,供match和search函数使用

无名分组

re_path(‘test/(\d+)/’, views.test),
正则匹配会将括号内匹配的内容当做位置参数传递给后面的视图函数

有名分组

re_path(‘(?P\d+)/’, views.test),
有名分组就是将括号内正则表示式匹配到的内容当做关键字参数传递给后面的视图函数

注意:无名分组和有名分组不能混用

反向解析

反向解析的本质:通过一些方法可以得到一个结果,该结果可以直接访问对应的url触发的视图函数

1.首先给路由起个别名

在这里插入图片描述

2.前端反向解析

在这里插入图片描述

3.后端反向解析

需要导入reverse方法

在这里插入图片描述
在这里插入图片描述

无名分组有名分组反向解析
前端
在这里插入图片描述

后端
在这里插入图片描述

路由分发
在这里插入图片描述

快捷运行manage.py
在这里插入图片描述

可以直接输入startapp 应用名去创建应用

可以通过include方法进行路径分发,利用路由分发之后,总路由就不再干路由和视图的直接对应关系了,而是做分发处理,识别当前的url是属于哪个应用的,直接交给那个应用去处理
在这里插入图片描述

也可以不用导入模块,直接使用
在这里插入图片描述

标签:匹配,视图,Django,re,分组,字符串,路由
From: https://blog.csdn.net/wjhltl/article/details/136786191

相关文章

  • Django连接数据库操作
    只能运行一个django项目从计算机名称开始一直到项目文件名,都不能包含中文不管是get请求还是post请求,都是朝一个地址发起执行的,那get请求和post请求对应的处理肯定要不一样request对象request.method:返回请求方式,并且全大写的字符串形式request.POST:获取用户提交p......
  • 路由
    4.路由理解:一个路由(route)就是一组映射关系(key-value),多个路由需要路由器(router)进行管理。前端路由:key是路径,value是组件。对SPA应用的理解(1)单页web应用(singlepagewebapplication,SPA)(2)整个应用只有一个完整的页面(3)点击页面中的导航链接不会刷新页面,只会做页面的......
  • 【20.2】Django框架Form组件之渲染HTML代码
    【一】引入forms组件只会帮我们渲染用户输入的标签(input/select...)【二】书写forms组件forms.pyfromdjangoimportforms#定义form类classMyForm(forms.Form):#username:字符串类型最小三位,最大八位username=forms.CharField(max_length=8,min......
  • 【20.1】Django框架Form组件之常用字段及插件
    【零】引入创建Form类时主要涉及到【字段】和【插件】字段用于对用户请求数据的验证插件用于自动生成HTML;【一】Field.clean(value)注意:这里说的是字段Field的clearn方法,不是表单Form的clean方法。虽然表单字段的Field类主要使用在Form类中,但也可以直接实例化它们来......
  • 【20.4】Django框架Form组件之钩子函数(Hook)
    【一】什么是钩子函数在forms组件中钩子函数(Hooks)是用来在特定事件发生时执行自定义逻辑的函数。它们提供了一种创建交互性和动态行为的方式,并可以用于处理表单的各种状态和数据。【二】常见的钩子函数【1】onInputChange当输入框的值发生变化时触发。你可以通过这个......
  • 【20.3】Django框架Form组件之渲染错误信息
    【一】定义form组件forms.py#定义form类classMyForm(forms.Form):#username:字符串类型最小三位,最大八位username=forms.CharField(max_length=8,min_length=3,label="用户名",error_messages={......
  • 【20.7】Django表单API详解
    【一】引入声明:以下的Form、表单等术语都指的的广义的Django表单。Form要么是绑定了数据的,要么是未绑定数据的。如果是绑定的,那么它能够验证数据,并渲染表单及其数据,然后生成HTML表单。如果未绑定,则无法进行验证(因为没有数据可以验证!),但它仍然可以以HTML形式呈现空白表单。若要......
  • 【20.6】Django框架Form组件之模型表单ModelForm
    【一】引入如果你正在构建一个数据库驱动的应用,那么你可能会有与Django的模型紧密映射的表单。比如,你有个BlogComment模型,并且你还想创建一个表单让大家提交评论到这个模型中。在这种情况下,写一个forms.Form类,然后在表单类中定义字段,这种一般创建表单的做法是冗余的,因为你已经......
  • 【20.5】Django框架Form组件之源码
    【一】切入点切入点form_obj.is_valid()defis_valid(self):"""ReturnTrueiftheformhasnoerrors,orFalseotherwise."""returnself.is_boundandnotself.errors如果is_valid要想返回True那么self.is_bound要为Trueself.errors......
  • Django 用re_path()方法正则匹配复杂路由
    app1.url.pyfromdjango.urlsimportpath,re_pathfrom.importviewsurlpatterns=[path('index',views.index,name='index'),path('test',views.test,name='test'),path('test_int/<int:id>/......