api_view['POST',“GET”]是否違背SOLID原則?

這不是我面臨的問題,只是一場公開的討論。在Django Rest框架中,我們聲明了一個decorator @api_view[],它接受如下參數

  1. POST
  2. GET
  3. PUT
  4. DELETE

在我的例子中,我可以在decorator中放置多個參數,并使一個函數具有多個責任,例如

  @api_view['POST', 'GET]
  def fbv_list(request):`
       if request.method == 'POST':
           #do something
       if request.method == 'GET':
           #do something

在這種情況下fbv_list做了不止一件事,即POST和GET。在這種情況中,這個函數不符合SOLID原則中的單一責任類????

這是我的問題,如果是,應該怎么做才能避免打破固體。

提前感謝。

? 最佳回答:

我將引用Django's官方文檔中的視圖定義來開始我的回答:

view函數,簡稱view,是一個接受web請求并返回web響應的Python函數。這個響應可以是網頁的HTML內容、重定向、404錯誤、XML文檔、圖像……或者任何東西。視圖本身包含返回該響應所需的任意邏輯。

視圖的職責是將web請求作為輸入,并返回web響應作為輸出。DRF API也是“視圖”,因此該定義也適用于此。

進一步細分,視圖的核心職責是接受請求并對其執行“任意”邏輯。什么是武斷的?當視圖收到請求時,它將如何決定要執行的操作集?請求是否試圖從系統中獲取一些信息、創建記錄,或者對數據模型進行復雜的更新操作?這是視圖必須決定的,因為這是它的主要目的。根據輸入請求的性質,輸出類型將發生變化。然而,核心功能仍然相同。它不違反SRP。我還列出了使用相同模式的Django文檔中的一個代碼片段:

from django.http import HttpResponseRedirect
from django.shortcuts import render

from .forms import NameForm

def get_name(request):
    # if this is a POST request we need to process the form data
    if request.method == 'POST':
        # create a form instance and populate it with data from the request:
        form = NameForm(request.POST)
        # check whether it's valid:
        if form.is_valid():
            # process the data in form.cleaned_data as required
            # ...
            # redirect to a new URL:
            return HttpResponseRedirect('/thanks/')

    # if a GET (or any other method) we'll create a blank form
    else:
        form = NameForm()

    return render(request, 'name.html', {'form': form})

注意:請檢查此鏈接,以了解SRP如何具有誤導性,以及其目的和用法如何主觀。

主站蜘蛛池模板: 在线中文字幕一区| 美女福利视频一区二区 | 亚洲韩国精品无码一区二区三区| 久久婷婷色一区二区三区| 国精产品一区一区三区MBA下载| 久久精品国产一区二区| 日本香蕉一区二区三区| 综合久久一区二区三区| 夜夜高潮夜夜爽夜夜爱爱一区| 亚洲av午夜福利精品一区人妖| 后入内射国产一区二区| 亚洲日韩国产欧美一区二区三区 | 国产精品香蕉在线一区| 99久久精品国产免看国产一区| 美女AV一区二区三区| 亚洲av无码片vr一区二区三区 | 亚洲一区二区三区在线观看精品中文 | 亚洲一区二区三区免费视频| 亚洲乱码日产一区三区| 国产精品女同一区二区久久 | 亚洲一区中文字幕久久| 国产高清在线精品一区二区| 国产视频一区二区在线观看| 亚洲一本一道一区二区三区| 精品无码人妻一区二区三区品 | 老鸭窝毛片一区二区三区| 一本一道波多野结衣AV一区| 大香伊人久久精品一区二区| 激情内射亚洲一区二区三区| 看电影来5566一区.二区| 中文字幕一区二区人妻| 久久精品国产免费一区| 肉色超薄丝袜脚交一区二区| 日韩精品人妻一区二区中文八零| 中文字幕亚洲一区二区三区| 国产成人精品无码一区二区三区| 中文字幕在线观看一区二区 | 亚洲国产精品一区二区三区久久| 一区二区三区久久精品| 国产午夜精品免费一区二区三区 | 99久久精品国产一区二区成人 |