首页 > 编程语言 >dft实战和源码剖析

dft实战和源码剖析

时间:2023-12-14 09:00:24浏览次数:44  
标签:views dft auth django 剖析 源码 contrib import drf

4. 初步编写API

3-02 drf-初步使用

drf项目下创建虚拟环境

1.PS D:> django-admin startproject drf d盘下创建drf项目
2.PS D:> cd drf
3.PS D:\drf> virtualenv -p "C:\Program Files\Python311\python.exe" .venv
4.d:\pyproject 项目目录下,虚拟环境执行pip freeze >requirements.txt(很多类似包)
5.剪切requirements.txt 到d:\dfr
6.(.venv) D:\drf>pip3 install -r requirements.txt

1. 基于django实现:

vscode下创建app01

(.venv) D:\drf>python manage.py startapp app01
  • 剔除setting中暂用不到的条目(#),数据库本次使用默认
# Application definition

INSTALLED_APPS = [
    #'django.contrib.admin',
    #'django.contrib.auth',
    #'django.contrib.contenttypes',
    #'django.contrib.sessions',
    #'django.contrib.messages',
    'django.contrib.staticfiles',
]

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    #'django.contrib.auth.middleware.AuthenticationMiddleware',
    #'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

ROOT_URLCONF = 'drf.urls'

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                #'django.contrib.auth.context_processors.auth',
                #'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]
WSGI_APPLICATION = 'drf.wsgi.application'


# Database
# https://docs.djangoproject.com/en/4.2/ref/settings/#databases

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}

setting

INSTALLED_APPS = [
    #'django.contrib.admin',
    #'django.contrib.auth',
    #'django.contrib.contenttypes',
    #'django.contrib.sessions',
    #'django.contrib.messages',
    'django.contrib.staticfiles',
    'app01.apps.App01Config'

·urls

#from django.contrib import admin
from django.urls import path
from app01 import views

urlpatterns = [
    #path('admin/', admin.site.urls),
    path('auth/', views.auth),
    
]

views

#from django.shortcuts import render,不需要前端了
from django.http import JsonResponse

# Create your views here.


def auth(request):
    return JsonResponse({'status':True,'message':"success"})
(.venv) D:\drf>python manage.py runserver

image-20231130102607846

image-20231130105433718

2. 基于drf实现:

安装drf,本质是一个app

(.venv) D:\drf>pip3 install djangorestframework
...
Successfully installed djangorestframework-3.14.0
  • 先注册settings
# Application definition

INSTALLED_APPS = [
    #'django.contrib.admin',
    #'django.contrib.auth',
    #'django.contrib.contenttypes',
    #'django.contrib.sessions',
    #'django.contrib.messages',
    'django.contrib.staticfiles',
    'app01.apps.App01Config',
    'rest_framework'
]

2.1 基于函数#基于函数FBV(function base view)

urls:

#from django.contrib import admin
from django.urls import path
from app01 import views

urlpatterns = [
    #path('admin/', admin.site.urls),
    path('auth/', views.auth),
    path('login/', views.login),
    
]

views:

#from django.shortcuts import render,不需要前端了
from django.http import JsonResponse
from rest_framework.response import Response
from rest_framework.decorators import api_view #需增加装饰器

# Create your views here.


def auth(request):
    return JsonResponse({'status':True,'message':"success"})

@api_view(["GET"]) #注意列表中字符串
def login(request):
    return Response({'status':True,'message':"success"})

嵌套数据,返回好看页面(drf)

http://127.0.0.1:8000/login/?format=json
#返回json格式

运行报错:

    raise RuntimeError(
RuntimeError: Model class django.contrib.contenttypes.models.ContentType doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.
[30/Nov/2023 11:11:57] "GET /login/ HTTP/1.1" 500 185811

settings:

# Application definition

INSTALLED_APPS = [
    #'django.contrib.admin',
    #'django.contrib.auth',
    #'django.contrib.contenttypes',
    #'django.contrib.sessions',
    #'django.contrib.messages',
    'django.contrib.staticfiles',
    'app01.apps.App01Config',
    'rest_framework'
]
REST_FRAMEWORK = {
    "UNAUTHENTICATED_USER": None,
    "UNAUTHENTICATED_TOKEN": None,
}

重启python

image-20231130113724599

image-20231130111944348

image-20231130113220482

但是:postman:

image-20231130112120215

以上正常

2.2 基于类class(CBV)

urls:(path('loginclass/', views.InfoView.as_view()),#基于类 )

#from django.contrib import admin
from django.urls import path
from app01 import views

urlpatterns = [
    #path('admin/', admin.site.urls),
    path('auth/', views.auth),
    path('login/', views.login),#基于函数
    path('loginclass/', views.InfoView.as_view()),#基于类    
    
]

views:(from rest_framework.views import APIView #基于类,class InfoView(APIView)

标签:views,dft,auth,django,剖析,源码,contrib,import,drf
From: https://www.cnblogs.com/liangfengshuang/p/17900414.html

相关文章

  • Java-研究HashMap的源码
    Java-研究HashMap的源码JDK版本:17类注释基于哈希表的Map接口实现。此实现提供了所有可选的映射操作,并允许null值和null键。(HashMap类大致相当于Hashtable,只不过它是不同步的并且允许null。)该类不保证映射的顺序;特别是,它不保证顺序随着时间的推移保持不变。此实现为基本操......
  • springboot004旅游路线规划系统(Java毕业设计,附数据库和源码)
    第一章绪论1.1选题背景与研究意义随着社会的不断进步,在居民生活水平提高的同时,人们当前在生活的方方面面也越来越注重服务所带来的体验,随着近几年国家政策大力发展旅游业,旅游景点的建设越来也完善,旅游业的发展速度得到了显著的提升。各大旅行社、旅游景点都不断的推出新的活动计......
  • 临床检验检查信息系统(LIS系统源码)C/S结构的应用模式
     LIS系统实现了实验室人力资源管理、标本管理、日常事务管理、网络管理、检验数据管理(采集、传输、处理、输出、发布)、报表管理过程的自动化,使实验室的操作人员和管理者从繁杂的手工劳作中解放出来,提高了检验人员的工作效率和效益,降低了劳动成本和差错发生率。LIS采用C/S(Clien......
  • python3源码方式安装
    系统默认的python3版本过低,得自己安装高版本python3。步骤主要为:1、删除旧版本。2、安装依赖。3、下载源码。4、配置。5、编译。参考链接:CentOS7安装python3超详细教程1、删除旧版pyhton3,执行:rpm-qa|greppython3|xargsrpm-ev--allmatches--nodeps2、安装依赖,执行:yum-......
  • MyBatis-Plus雪花算法实现源码解析
    1.雪花算法(SnowflakeAlgorithm)雪花算法(SnowflakeAlgorithm)是一种用于生成唯一标识符(ID)的分布式算法。最初由Twitter公司开发,用于生成其内部分布式系统中的唯一ID。雪花算法的设计目标是在分布式系统中生成全局唯一的ID,同时保证ID的有序性和趋势递增。雪花算法生成的ID是64......
  • Netty04-优化与源码
    优化与源码分析1.优化1.1扩展序列化算法序列化,反序列化主要用在消息正文的转换上序列化时,需要将Java对象变为要传输的数据(可以是byte[],或json等,最终都需要变成byte[])反序列化时,需要将传入的正文数据还原成Java对象,便于处理目前的代码仅支持Java自带的序列化,反......
  • 智能AI问答系统ChatGPT网站系统源码(附系统部署教程)
    chatGPTGPT4.0,Midjourney绘画,相信对大家应该不感到陌生吧?简单来说,GPT-4技术比之前的GPT-3.5相对来说更加智能,会根据用户的要求生成多种内容甚至也可以和用户进行创作交流。然而,GPT-4对普通用户来说都是需要额外付费才可以使用。所以今天小编就整理一个真正免费的AI工具。不是一......
  • 深入了解RPM包管理与Nginx源码包管理
    在Linux系统中,RPM(RedHatPackageManager)是一种流行的软件包管理工具,用于安装、查询和卸载软件包。同时,在编译和安装Nginx等软件时,源码包管理也是一个重要的方面。本文将详细介绍RPM包管理的基本操作以及Nginx源码包管理的方法。RPM包管理1.安装RPM包使用命令可以轻松安装RPM......
  • drf实战和源码剖析----学习笔记1
     学自:bilibili武沛齐老师.武老师讲课:清晰,连贯,实用,透彻,真乃名师!#1.什么是前后端分离-不分离,主要用于后台系统(CRUD)和用户量上的情况,开发起来代价小-分离,面向用户,大量,几十万-根据实际情况#2.什么是drf?作用是什么?#3.必备工具:postman做为后端开发人员,要......
  • 交友系统,APP小程序H5,三端源码交付,支持二开!交友系统:打造独具魅力的社交平台
    随着社交媒体的兴起,交友系统成为了现代社会不可或缺的一部分。人们希望通过网络结识新朋友,拓展社交圈,寻找志同道合的伙伴,甚至找到自己的爱情。本文将为您介绍交友系统的定义、功能以及如何打造一个独具魅力的社交平台。交友系统是一种基于互联网的社交平台,旨在让用户更便捷地认识......