首页 > 其他分享 >django中的视图层

django中的视图层

时间:2022-09-07 14:23:02浏览次数:80  
标签:return 函数 request 视图 django CBV def

1.什么是视图层

简单来说,就是用来接收路由层传来的请求,从而做出相应的响应返回给浏览器

2.视图层的格式与参数说明

2.1基本格式

from django.http import HttpResponse
def page_2003(request):
    html = '<h1>第一个网页</h1>'
    return HttpResponse(html)
# 注意需要在主路由文件中引入新创建的视图函数

2.2带有转换器参数的视图函数

def test(request, num):
    html = '这是我的第%s个网页' % num
return HttpResponse(html)
# 添加转换器的视图函数,request后面的参数num为path转换器中的自定义名

2.3带有正则表达式参数的视图函数

同带有转换器参数的视图函数

2.4重定向的视图函数

from django.http import HttpResponse,HttpResponseRedirect
def test_request(request):--注意path函数里也要绑定test_request这个路径
return HttpResponseRedirect('page/2003/')--重定向到127.0.0.1:8000/page/2003这个页面去

2.5判断请求方法的视图函数

def test_get_post(request):
if request.method == 'GET':
    pass   
elif request.method == 'POST':
    pass

2.6加载模板层的视图函数

使用render()直接加载并相应模板语法:
​from django.shortcuts import render
​def test_html(request):   
​ return render(request, '模板文件名', 字典数据)
注意视图层的所有变量可以用local()方法全部自动整合成字典传到render的最后一个参数里

2.7返回JsonResponse对象的视图函数

json格式的数据的作用:

前后端数据交互需要用到json作为过渡,实现跨语言传输数据。

格式:

from django.http import JsonResponse
def ab_json(request):
    user_dict={'username':'json,我好喜欢','password':'1243'}
return JsonResponse(user_dict,json_dumps_params={'ensure_ascii':False})
# 字典传入时需要设置json_dumps_params格式化字符串,不然字典里的中文会报错
    list = [111,22,33,44]
return JsonResponse(list,safe=False)
# 列表传入序列化时需要设置safe为false ,不然会报错

2.8视图层的FBV和CBV格式

视图函数既可以是函数(FBV)也可以是类(CBV)

1.FBV
def index(request):
return HttpResponse('index')

2.CBV
# CBV路由
    pathr'^login/',views.MyLogin.as_view())
# CBV视图函数
from django.views import View
class MyLogin(View):
def get(self,request):
return render(request,'form.html')
def post(self,request):
return HttpResponse('post方法')
"""
FBV和CBV各有千秋
CBV特点
  能够直接根据请求方式的不同直接匹配到对应的方法执行

标签:return,函数,request,视图,django,CBV,def
From: https://www.cnblogs.com/suncolor/p/16663109.html

相关文章

  • Django web开发:实现账号登陆的注意事项以及2种根据session判断的方法
    Djangoweb开发:实现账号登录的注意事项以及2种根据session判断的方法  最近学习基于Django的WEB后端开发,在做网站会员的登录判断时遇到了一些问题,为了提醒自己于是记......
  • Django开发3- 前后端分离
    数据交互接口规范REST,全称RepresentationalStateTransfer,意为"表现层状态转化"。django的第三方拓展——django-rest-framework可以实现开发符合REST规范的框架。Res......
  • drf基本视图类APIView
    rest_framework.views.APIViewAPIView是RESTframework提供的所有视图类的基类,继承自Django的view父类APTview与view的不同之处在于:传入到视图方法中的是RESTfr......
  • delphi TcxGrid网格组件:用CxGrid制作卡片视图
    一.删除cxGrid1DBTableView视图.TcxGrid在创建时,会自动添加一个cxGrid1DBTableView1视图,我们需要删除它 二.创建卡片视图. 三.链接数据库.......
  • 一篇文章教你如何用界面组件DevExpress WPF创建一个WPF视图模型
    DevExpressWPF拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpressWPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专......
  • django框架-模型层
    正反向进阶操作#正向查询1.查询电话号码问1234的学校名称#res=models.School.objects.filter(schoolinfo_fo__phone='1234').values('name')#print(res)......
  • django中的request对象方法
    1.什么是request对象在django中,当一个页面被请求时,Django就会创建一个包含本次请求原信息的HttpRequest对象;Django会将这个对象自动传递给响应的视图函数,一般视图函数约定......
  • 在DJango中使用模型类时,出现一个DoesNotExist
    在使用Django去查询数据库时,如果不存在,会抛出一个异常。try:order=Order.objects.get(order_number=order_number)iforder.orde......
  • day 58 django orm 单表操作
    昨日内容回顾orm单表操作增删改查增加models.Student(name='yuhong',age=23).save()​models.Student.objects.create(name='yuhong',age=23)​obj_list=[]foriin......
  • day59 django 单表操作及域名反向解析
    昨日内容回顾orm单表操作增删改查增加models.Student(name='yuhong',age=23).save()​models.Student.objects.create(name='yuhong',age=23)​obj_list=[]foriin......