사후 요청을 사용하여 Django 서버로 데이터 보내기

Salman Mehmood 2024년2월15일
사후 요청을 사용하여 Django 서버로 데이터 보내기

Django에 대한 이 설명에서는 postget 요청과 Django에서 post를 사용하여 CSRF 토큰을 구현하는 방법을 간략하게 소개합니다.

post 요청을 사용하여 Django 서버에 데이터 보내기

요청을 보내거나 응답을 받을 때마다 HTTP 프로토콜을 사용합니다. HTTP에는 get, post, put, delete 등과 같은 여러 가지 방법이 있지만 여기서는 getpost 두 가지 방법에 중점을 둘 것입니다.

이미지를 가져오기 위해 링크를 방문하면 서버에서 무언가를 기대하기 때문에 get 요청입니다. 서버에 무언가를 보내려는 경우 양식을 작성하고 데이터를 제출할 수 있습니다. 그것이 포스트 방법입니다.

검색 창을 사용하여 데이터를 검색하면 get 메서드가 백그라운드에서 작동하고 주소 표시줄에서 데이터를 볼 수 있습니다.

암호나 기타 비밀 정보일 수 있는 데이터를 보낼 때 get 방법을 사용하지 않습니다. 우리는 백엔드에서 post 방법을 사용할 것입니다.

post 방법을 사용하는 두 번째 이유는 많은 필드가 있는 전체 양식의 여러 데이터를 보낼 때 주소 표시줄에 모든 것을 표시하고 싶지 않기 때문입니다. 기술적으로 데이터 제출에는 항상 post 방법을 사용해야 합니다.

첫 번째 단계는 양식으로 이동하여 메서드 속성을 post로 설정하는 것입니다. 기본적으로 양식은 get 메소드를 사용합니다.

<form action='add' method='post'>
    Enter 1st number<input type="text" name='num1'><br>
    Enter 2nd number<input type="text" name='num2'><br>

</form>

post 메서드가 올바르게 작동하는지 살펴보겠습니다. Django 프로젝트에서 이 코드를 사용하려고 하므로 서버를 실행하고 브라우저로 이동합니다.

출력:

Django 게시 요청 - 출력

양식을 제출하면 오류가 발생하고 최소한 주소 표시줄에는 데이터가 없지만 그게 뭐가 잘못된 건가요? 이 오류는 CSRF 확인이 실패했음을 나타냅니다.

여러 해킹 기술이 인터넷에서 사용 가능하기 때문에 오류가 발생합니다. CSRF는 데이터를 안전하게 보내는 데 도움이 되는 태그입니다.

그러나 우리는 이 공격에 대해 많이 이야기하지 않을 것입니다. CSRF에 대해 검색할 수 있습니다.

Django에는 이 오류를 방지하는 기능이 내장되어 있습니다. settings.py 파일로 이동하면 MIDDLEWARE 목록을 찾을 수 있으며 이 목록에서 데이터를 보내는 동안 사용할 CSRF 기술이 이미 지정되어 있음을 알 수 있습니다.

Django 게시 요청 - MIDDLEWARE

Jinja 코드를 사용하여 양식에서 해당 CSRF 토큰을 사용해야 합니다.

<form action='add' method='post'>
    {% csrf_token %}
    Enter 1st number<input type="text" name='num1'><br>
    Enter 2nd number<input type="text" name='num2'><br>


</form>

views.py 파일을 열고 이 데모 코드를 작성해야 합니다.

def add(request):
    val1 = int(request.POST["num1"])
    val2 = int(request.POST["num2"])
    res = val1 + val2

    return render(request, "request.html", {"result": res})

따라서 이 코드에서는 두 개의 정수를 합산하여 오류 없이 request.html에 결과를 보냅니다.

Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn