일기장/하루 정리

Django #사용자 입력

Supersett 2022. 5. 21. 15:07

 

#{% csrf_token %} 

Django의 CSRF공격에 대한 방어

CSRF 공격을 방어하기 위한 다양한 방법이 있지만 Django에서는 기본적으로 csrf token을 이용한다.

 

POST 요청에 대해서만 csrf token을 발급하고 체크한다.

  • CsrfViewMiddleware는 MIDDLEWARE 설정에서 기본적으로 활성화 되어있다.
    • csrf token 발급(사용자가 로그인할 때마다 값이 변경됨)
    • view가 호출되기 전 csrfmiddlewaretoken 유효성 검증
  • POST 양식을 사용하는 템플릿에서 <form> 태그 안에 {% csrf_token %} 태그를 사용

 

 

# Model로 입력 받기

#블로그 글을 저장해주는 함수
def create(request):
    if(request.method == 'POST'):
        post =Blog()
        post.title=request.POST['title']
        post.body=request.POST['body']
        post.date=timezone.now()
        post.save()
    return redirect('home')


def formcreate(request):
    if request.method=='POST':
        form =BlogForm(request.POST)
        if form.is_valid():
            post=Blog()
            post.title=form.cleaned_data['title']
            post.body=form.cleaned_data['body']
            post.save()
        return redirect('home')
    else:            
        form=BlogForm()
    return render(request,'form_create.html',{'form':form})


def modelformcreate(request):
    if request.method=='POST':
        form =BlogModelForm(request.POST)
        if form.is_valid():
            
            form.save()
        return redirect('home')
    else:            
        form=BlogModelForm()
    return render(request,'form_create.html',{'form':form})