django - 4
Form
django에서는 간단한 폼을 통해 템플릿으로 보낼 수 있는 form클래스를 제공
해커는 위조폼을를 통해 일종의 피싱 사기를 칠 수 있다.
django에서는 CSRF(Cross-Site request Forgery)라는 개념이 있는데 교차 사이트 요청 위조라고 한다.
- 각 개별 세션 동안 모든 폼에 임의의 비밀번호와 토큰을 생성하는 것이다,
 - 서버는 토큰이 현재 세션과 일치하는 지 확인 할 수 있다.
 - 
HTML <form>태그에 <% csrf_token %>을 삽입하면 된다. 
django Form
- 폼 태그
 submit input
# cars/form.py
from django import forms
class ReviewForm(forms.Form):
    first_name = forms.CharField(label="First Name", max_length=100)
    last_name = forms.CharField(label="Last Name", max_length=100)
    email = forms.EmailField(label="Email")
    review = forms.CharField(label="Please Write your review hear")
# cars/views.py
from django.shortcuts import render, redirect
from django.urls import reverse
from .forms import ReviewForm
# Create your views here.
def rental_review(request):
    # POST REQUEST --> FORM CONTENTS --> THANK YOU
    if request.method == "POST":
        form = ReviewForm(request.POST)
        if form.is_valid():
            # {'first_name':'job}
            print(form.cleaned_data)
            return redirect(reverse("cars:thank_you"))
    # ELSE, RENDER FORM
    else:
        form = ReviewForm()
    return render(request, "cars/rental_review.html", context={"form": form})
def thank_you(request):
    return render(request, "cars/thank_you.html")
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <h1>RENTAL_REVIEW</h1>
    <form action="" method="POST">
      
      <input type="submit" />
    </form>
  </body>
</html>
Form Rendering
``: “<p>로 감싼다</p>”
<form method="POST">
   
  <div> </div>
  <input type="submit" />
</form>
CSS
- Create 
app/static/app/custom.cssfile - css를 조작하거나, 
widget을 수정하여 디자인 가능(widget={widget}) - 
forms.py에 작성할 수 있으나 스파게티 코드가 될 수도 있으니 주의한다. 
Model Form
- 
django에서는 모델과 연결되어있는 폼을 자동으로 생성하는ModelForm클래스를 제공한다. 
from dataclasses import field
from django import forms
from .models import Review
from django.forms import ModelForm
class ReviewForm(ModelForm):
    class Meta:
        model = Review
        fields = ['first_name', 'last_name']
      
댓글남기기