사후 요청을 사용하여 Django 서버로 데이터 보내기
Django에 대한 이 설명에서는 post
및 get
요청과 Django에서 post
를 사용하여 CSRF 토큰을 구현하는 방법을 간략하게 소개합니다.
post
요청을 사용하여 Django 서버에 데이터 보내기
요청을 보내거나 응답을 받을 때마다 HTTP 프로토콜을 사용합니다. HTTP에는 get
, post
, put
, delete
등과 같은 여러 가지 방법이 있지만 여기서는 get
및 post
두 가지 방법에 중점을 둘 것입니다.
이미지를 가져오기 위해 링크를 방문하면 서버에서 무언가를 기대하기 때문에 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 프로젝트에서 이 코드를 사용하려고 하므로 서버를 실행하고 브라우저로 이동합니다.
출력:
양식을 제출하면 오류가 발생하고 최소한 주소 표시줄에는 데이터가 없지만 그게 뭐가 잘못된 건가요? 이 오류는 CSRF 확인이 실패했음을 나타냅니다.
여러 해킹 기술이 인터넷에서 사용 가능하기 때문에 오류가 발생합니다. CSRF는 데이터를 안전하게 보내는 데 도움이 되는 태그입니다.
그러나 우리는 이 공격에 대해 많이 이야기하지 않을 것입니다. CSRF에 대해 검색할 수 있습니다.
Django에는 이 오류를 방지하는 기능이 내장되어 있습니다. settings.py
파일로 이동하면 MIDDLEWARE
목록을 찾을 수 있으며 이 목록에서 데이터를 보내는 동안 사용할 CSRF 기술이 이미 지정되어 있음을 알 수 있습니다.
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
에 결과를 보냅니다.
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