112. 요청이 제한된method 장식기

4292 단어

클라이언트와 서버 간에 가장 자주 사용되는 두 가지 요청 방식:


1. GET 요청은 일반적으로 서버에 데이터를 요청하는 데 사용되지만 서버에 데이터를 제출하지 않으며 서버의 상태를 변경하지 않습니다.


2. POST 요청은 일반적으로 서버에 데이터를 제출하는 데 사용되며 서버의 상태를 변경합니다.


제한 요청 장식기:


Django에 내장된 보기 장식기는 보기에 제한을 줄 수 있습니다. 예를 들어 정면도는 GET의 method를 통해서만 접근할 수 있습니다.자주 사용하는 내장 뷰 장식기:


1. django.http.decorators.http.require_http_methods: 이 장식기는 접근할 수 있는 방법의 목록을 전달해야 합니다.
(1) 예를 들어 클라이언트가 GET 요청을 보내면 사용자에게 글을 추가하는 인터페이스로 돌아간다.POST 요청이 전송되면 제출된 데이터를 데이터베이스에 저장합니다.views.py 파일의 예제 코드는 다음과 같습니다.
from django.views.decorators.http import require_http_methods
from django.http import HttpResponse
from django.shortcuts import render
from .models import Article


@require_http_methods(['GET', 'POST'])
def index2(request):
    
    
    if request.method == 'GET':
        return render(request,'static/add.html')
    else:
        title = request.POST.get('title')
        content = request.POST.get('content')
        price = request.POST.get('price')
        Article.objects.create(title=title, content=content, price=price)
        articles = Article.objects.all()
        return render(request, 'static/index.html', context={'articles': articles}

(2)index.html 예제 코드는 다음과 같습니다.



    
    Title


 
    {% for article in articles %}
        
    {% endfor %}
    
{{ article.title }} {{ article.content }} {{ article.price }} {{ article.create_time }}

(3)urls.py 파일의 예제 코드는 다음과 같습니다.
from django.urls import path
from article import views

urlpatterns = [
    path('', views.index, name='index'),
    path('add/', views.add, name='add'),
    path('add2/', views.index2, name='add2'),
]

Postman 소프트웨어에서 POST 요청으로 url:127.0.1:3000/add2/를 입력하고 URL 아래 Body에 필요한 매개 변수 값인 title, content, price를 전송합니다.이러한 결과를 되돌려줍니다. Postman 소프트웨어에서 GET 요청 URL:127.0.1:3000/add2/를 사용하면 글을 추가한 페이지를 되돌려줍니다. 그러나 Postman에서 폼에 데이터를 입력해도 제출 단추를 누르면 아무런 반응이 없기 때문에 브라우저에서 GET를 사용하여 접근을 요청할 수 있습니다.제출 단추를 누르면 데이터베이스에 새로 추가된 글 정보를 볼 수 있습니다.
2. django.views.decorators.http.require_GET: 이 장식기는 require_http_methods(['GET'])의 간략한 형식으로 GET의 method만 사용하여 보기에 접근할 수 있습니다.
(1) 예를 들어 GET가 첫 페이지,views에 접근할 수 있도록 합니다.py 파일의 예제 코드는 다음과 같습니다.
from django.views.decorators.http import require_GET


@require_GET
def index(request):
    articles = Article.objects.all()
    return render(request, 'static/index.html', context={'articles':articles})

(2)index.html의 예제 코드는 다음과 같습니다.
    
    {% for article in articles %}
  • {{% article.title %}}
  • {{% article.content %}}
  • {{% article.price %}}
  • {% endfor %}

3. django.views.decorators.http.require_POST: 이 장식기는 require_http_methods(['POST'])의 약자로 POST에서 요청한 method만 사용하여 뷰에 액세스할 수 있습니다. 예제 코드는 다음과 같습니다.
from django.views.decorators.http import require_POST


@require_POST
def add(request):
    title = request.POST.get('title')
    content = request.POST.get('content')
    Article.objects.create(title=title, content=content)
    return HttpResponse('success')

4. django.views.decorators.http.require_safe: 이 장식기는 require_http_methods(['GET','HEAD'])의 약자 형식은 상대적으로 안전한 방식으로만 보기에 접근할 수 있습니다. GET와 HEAD는 서버에 대한 삭제 행위를 하지 않기 때문에 이것은 상대적으로 안전한 요청 방식입니다.

좋은 웹페이지 즐겨찾기