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 之必知必会三板斧

    一、HttpResponse 在django.http 模块中定义了HttpResponse 对象的API,HttpRequest 对象由Django 自动创建,不调用模板,直接返回数据。 1 在 app/views.py 中导入模块,添加对应的函数 from django.shortcuts import HttpResponse, render, red…

    2023年4月2日
    00
  • Django 之中间件

    Django 之中间件

    Python开发 2023年4月2日
    00
  • Django 连接数据库 MySQL

    一、Django 连接 MySQL 修改 settings.py 文件 # 默认用的是sqlite3 # Database # https://docs.djangoproject.com/en/4.1/ref/settings/#databases # DATABASES = { # ‘default’: { # ‘ENGINE’: ‘django.db.…

    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 简介和版本介绍

    一、简介 官方地址:https://www.djangoproject.com Django 是一个由Python 编写的具有完整架站能力的开源Web框架。使用 Django,只要很少的代码,开发人员就可以轻松地完成一个正式网站所需要的大部分内容,并进一步开发出全功能的Web服务。 Django 本身基于MVC 架构,即Model(模型)+View(视图)+…

    2023年4月2日
    00
  • Sublime Text 配置

    介绍 Sublime Text 具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等,还可自定义键绑定,菜单和工具栏。 Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。 Sublime Text 是一个跨平台的编辑器,同时支持 Windows…

    2023年4月2日
    00
  • Django ORM 事务和查询优化

    一、事务操作 模块 from django.db import transaction 1 开启事务:with transaction.atomic() from django.db import transaction class MyView(View): def post(self, request): ### 在with代码块中开启事务,出了with…

    Python开发 2023年4月2日
    00
  • Django 使用Pycharm 创建工程

    一、Pycharm 创建Django 工程 事实上,我们一般不使用命令行,而是直接在Pycharm 中创建Django 项目。 Pycharm 是进行Django 开发的最佳 IDE,请大家自行安装,建议使用最新的专业版本。 (非专业版的Pycharm 不提供Django 开发模块,非最新版的 Pycharm 可能对最新的 Python 或者 Django …

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