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

1、Django的反向解析

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

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

3、实例:

  1. 在urls.py文件中,添加如下代码
   from app01 import views #导入views文件
   urlpatterns = [
     path('admin/', admin.site.urls), 
     path('books/look/',views.books,name='books'), #在本例中需要添加的代码
    ]
  1. 在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
  1. 在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对象常用的参数及方法有:

  1. request.method:请求方式(GET/POST)
  2. request.path:请求路径
  3. request.POST:POST请求的数据,将POST的请求数据保存在一个字典中
  4. request.GET:GET请求的数据
  5. request.META:请求头
  6. request.get_full_path():不仅可以拿到请求路径,还可以拿到请求路径中的参数部分
  7. request.is_ajax():bool值,判断请求是否是由ajax发的
  8. 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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值