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日

相关文章

  • Python Web开发主流框架

    Web 开发是Python 语言应用领域的重要部分,也是工作岗位最多的领域。如果你对基于Python的Web 开发有兴趣,正打算使用Python 做Web 开发,或者已经是一个Web 开发者有工作需要,要做自动化运维、数据的图形化展示等,那么学习一门基于Python的Web 开发框架是必修课。 Python作为当前最火爆最热门,也是最主要的Web 开发语言之…

    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 使用Pycharm 创建工程

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

    2023年4月2日
    00
  • Django 聚合分组F与Q查询及choices

    一、聚合查询 需要导入模块:from django.db.models import Max, Min, Sum, Count, Avg 关键语法:aggregate(聚合结果别名 = 聚合函数(参数)) 查询结果:使用聚合函数,从每一个组中获取结果:字典 注意点: 1 聚合函数必须在分组之后才能使用 2 没有分组,即默认整体就是一组 3 查询结果为 普通字…

    Python开发 2023年4月2日
    00
  • Django 之路由层

    一、Django 请求周期生命流程图 首先,用户在浏览器中输入URL,发送一个GET 或 POST 方法的request 请求。 Django 中封装了socket 的WSGI 服务器,监听端口接受这个request 请求。 再进行初步封装,然后传送到中间件中,这个request 请求再依次经过中间件。 对请求进行校验或处理,再传输到路由系统中进行路由分发,…

    2023年4月2日
    00
  • Django request对象

    request对象       request.method         # 获取当前的请求方式,并且返回的是全大写的字符串 print(request.POST.get(‘hobby’))   # 只能接收最后一个 print(request.POST.getlist(‘hobby’))  # 接收多个 request.GET.get(‘name’) …

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

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

    2023年4月2日
    00
  • 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
合作推广
合作推广
分享本页
返回顶部