二、Django框架中小知识点总结

mac2026-01-14  11

1、Django的反向解析

1、反向解析 定义: 再urls.py文件中的路由设置中,path()和re_path()两个方法的name属性可以对前面的路径设置别名,而反向解析即是将其他地方中的别名重新解析为url路径 2、创建反向解析的步骤:

路径(urls.py文件中):url(‘路径’,视图函数,name=“别名”)在模板语法中如果是静态路径,反向解析的语法为:{% url '别名' %};而如果是动态路径,则基本语法变为{% url '别名' 动态参数 %},即将动态参数的值传入反向解析式,在这个里面。在视图函数里如果是静态路径,反向解析的语法为reverse('别名');如果是动态路径,则基本语法变为reverse('别名',args=(参数1,参数2,参数3))

3、实例:

在urls.py文件中,添加如下代码 from app01 import views #导入views文件 urlpatterns = [ path('admin/', admin.site.urls), path('books/look/',views.books,name='books'), #在本例中需要添加的代码 ] 在views.py文件中,创建视图函数,代码如下: # 创建一个视图函数,其重定向到该路径 def delete(request,delete_book_id): Book.objects.filter(nid=delete_book_id).delete()#查到主键为delete_book_id的记录,并用".delete()"方法删除此条记录 return redirect(reverse('books')) #反向解析,将“books”解析为url 在html类型文件中,如果需要添加该路径, <form action="{{ url 'name' }}" methon="post"> 表单体 </form>

2、Django的路由分发

Django路由分发要用到的方法就是include() 1、整个项目的路由分发都要放在urls.py文件中 2、基本语法: 假设有一个项目,其中有两个两个应用,应用名字分别为app01和app02;其具体的语法为:

from django.conf.urls import url,include urlpatterns = [ path('app01/',include('app01.urls'))#(表示以app01开头的全部引入app01文件夹中的urls中去)此时,访问的路径将会改变,所有的路径均需以app01开头,而不能向以前一样直接以路径开头 ]

3、在老的Django版本中,想要仅以ip地址而不加任何文件名访问首页,需要使用正则限制其以空开头以空结尾才可("^$");而新版本中的Django直接设置("")即可

3、views.py文件中视图函数的request对象

request对象常用的参数及方法有:

request.method:请求方式(GET/POST)request.path:请求路径request.POST:POST请求的数据,将POST的请求数据保存在一个字典中request.GET:GET请求的数据request.META:请求头request.get_full_path():不仅可以拿到请求路径,还可以拿到请求路径中的参数部分request.is_ajax():bool值,判断请求是否是由ajax发的HttpResponse(“str”)

4、Django中的重定向与转发语法

1、重定向语法:render(request,'要转发的页面文件名字',要传入页面的变量[以字典形式传送模板语言需要的对象]) 实例: render(request,'book_view.html',{'book_list':book_list});表示转发book_view.html语句,并将视图函数中的book_list对象传入book_view.html页面,在传入之后就可用模板语法对页面进行渲染,这个后面会讲。

最新回复(0)