Django 之视图层

 

 

 

 

 

 

JsonResponse

1 json格式的数据有什么用
  • 前后端数据交互需要使用json作为过渡,实现跨语言传输数据
2 前后端方法对应
  • JSON.stringify() -  json.dumps()
  • JSON.parse()     -  json.loads()
3 JsonResponse 对象实现
import json
from django.http import JsonResponse
def jsonx(request):
    user_dict = {'nickname':'iyuyixyz', 'email':'iyuyi.xyz@gmail.com', 'hobby':'dj', '小姨子'}
    # 先转成json格式字符串
    # json_str = json.dumps(user_dict, ensure_ascii=False)
    # 将该字符串返回
    # return HttpResponse(json_str)
    return JsonResponse(user_dict, json_dumps_params = {'ensure_ascii':False})

    # 对列表序列化
    # list = [1, 2, 3, 4, 5]
    # return JsonResponse(list, safe = False)  
    # 默认 safe=True 代表只能序列化字典对象,safe=False 代表可以序列化字典以外的对象
    # In order to allow non-dict objects to be serialized set the safe parameter to False.
 

FBV和CBV

Django 的视图层由两种形式构成:FBV和CBV

  • FBV基于函数的视图(Function base view)我们之前一直介绍的都是FBV
  • CBV基于的视图 (Class base view)

案例

urls.py

from django.urls import path, register_converter, re_path
from app import views

urlpatterns = [
    re_path(r'^login/',views.LoginView.as_view()), # 必须调用类下的方法 as_view
]

views.py

from django.shortcuts import render, HttpResponse, redirect
from django.views import View

class LoginView(View):
    def dispatch(self, request, *args, **kwargs): # 可在该方法内做一些预处理操作
        # 当请求url为:http://127.0.0.1:8008/login/会先触发dispatch的执行
        # 如果http协议的请求方法为GET,则调用下述get方法
        # 如果http协议的请求方法为POST,则调用下述post方法
        obj = super().dispatch(request, *args, **kwargs) # 必须继承父类的dispatch功能
        return obj # 必须返回obj

    def get(self,request):
        return render(request, 'login.html')

    def post(self,request):
        name = request.POST.get('name')
        pwd = request.POST.get('pwd')
        if name  == 'xyz' and pwd == '123':
            result='登录成功'
        else:
            result='用户名或密码错误'
        return HttpResponse(result)

测试

python manage.py runserver

验证GET请求:在浏览器输入:http://127.0.0.1:8001/login/验证POST请求:在表单内输入数据然后提交。

采用CBV可以引入面向对象的思想对数据进行更高程度的封装。

 

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Django 之视图层 - Python技术站

(0)
上一篇 2023年4月2日
下一篇 2023年4月2日

相关文章

  • Django django-admin.py 命令详解

    一、Django 基本命令 下载 Django pip3 install django     # 默认下载最新版 pip3 install django==4.1  # 手动选择版本   创建Django 项目 格式:django-admin startproject 项目名 django-admin startproject mysite   创建APP…

    2023年4月2日
    00
  • Django 出现 frame because it set X-Frame-Options to deny 错误

    一、背景 使用 django3 进行开发时,由于项目前端页面使用iframe框架,浏览器错误提示信息如下 Refused to display ‘http://127.0.0.1:8000/’ in a frame because it set ‘X-Frame-Options’ to ‘deny’.  根据提示信息发现是因为 X-Frame-Options…

    Python开发 2023年4月2日
    00
  • Django 静态文件配置

    一、静态文件配置 在 settings.py 文件的最后添加 # settings.py # Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/4.1/howto/static-files/ # STATIC SETTINGS STATIC_URL = ‘/s…

    2023年4月2日
    00
  • Django ORM 实现数据的多表 增删改查

    一、创建模型和表 假定下面这些概念、字段与关系: 作者模型:一个作者有姓名和年龄。 作者详细模型:把作者的详情放到详情表,手机号,家庭住址信息。 作者详情模型 和 作者模型之间是一对一的关系(one-to-one)。 出版社模型:出版社有名称,所在城市以及email。 书籍模型: 书籍有书名和价格、出版日期。 一本书可能会有多个作者,一个作者也可以写多本书,…

    Python开发 2023年4月2日
    00
  • Django ORM 常用字段和参数

    一、models中的常用字段类型 字段类型 类型 说明 AutoField 自动增长的 IntegerField,通常不用指定,不指定时Django会自动创建属性名为 id 的自动增长属性。 BooleanField 布尔字段,值为True 或 False NullBooleanField 支持Null、True、False三种值 CharField 字符串…

    Python开发 2023年4月2日
    00
  • Django 之Auth模块

    一、Auth 模块是什么 Auth 模块是Django中自带的用户认证模块。 一个网站系统需要实现用户注册、用户登录、用户认证、注销、修改密码等功能,Django中内置了强大的认证系统-auth,默认使用 auth_user 表来存储用户的数据。 同时Django有一个后台管理系统(127.0.0.1:8000/admin),使用的用户名和密码也是这张数据表…

    2023年4月2日
    00
  • Django 之模版层

    一、模板简介 将前端页面和Python 的代码分离是一种的开发模式。 为此 Django专门提供了模板系统 (Template System,即模板层)来实现这种模式。 Django 的模板 = HTML代码 + 模板语法 存放于 templates 目录下的 html文件称之为模板文件,要返回的 html页面中的数据是动态的,那么必须在 html页面中嵌入…

    Python开发 2023年4月2日
    00
  • Django 之ModelAdmin对象(补)

    一、后台管理系统配置 1 在该表对应的models类里面添加一个Meta类 class Meta: verbose_name_plural = ‘用户表’ ### 指定该表在admin后台的名字为: 用户表 # verbose_name = ‘用户表’ ### 末尾还是会自动加s   2 null=True,blank=True的区别 ### null=Tr…

    2023年4月2日
    00
合作推广
合作推广
分享本页
返回顶部