본문 바로가기

form4

[Django] Form 처리, 함수형 뷰에서 클래스 기반 뷰(CBV)로 리팩토링하기 “코드가 너무 길어졌어요… 뷰를 더 깔끔하게 쓸 수 없을까요?”장고를 배우면서 가장 먼저 접하게 되는 건 함수형 뷰(Function-Based View)입니다.하지만 프로젝트가 커지면 점점 코드가 길어지고 반복되는 부분도 많아지죠. 이럴 때 좋은 대안이 클래스 기반 뷰(Class-Based View)입니다.오늘은 제가 직접 구현했던 리뷰 폼 기능을 CBV로 리팩토링한 과정을 소개드리며, 왜 이렇게 고쳐야 했는지도 함께 정리해볼게요.1️⃣ 기존 함수형 뷰 코드def review(request): if request.method == 'POST': form = ReviewForm(request.POST) if form.is_valid(): form.save(.. 2025. 7. 24.
[Django] ModelForm으로 폼을 간단히! 그런데 레이블을 잃었다... 🧩 상황Django에서 사용자 입력 폼을 만들 때 forms.Form을 쓰면 유효성 검사나 필드 구성이 번거로워요. 그래서 forms.ModelForm을 사용하면 모델 기반으로 폼을 자동 생성할 수 있어서 매우 간편합니다.class ReviewForm(forms.ModelForm): class Meta: model = Review fields = "__all__"위와 같이 쓰면 Review 모델의 모든 필드를 자동으로 폼으로 생성해줍니다. 하지만 문제는...❗ 레이블(label)이 다 영어 변수명으로 나와요!🔍 원인ModelForm은 Model 클래스에 정의된 필드 이름을 그대로 label로 사용합니다. verbose_name을 모델에서 정의하지 않으면 변수명을 그대로 .. 2025. 7. 24.
[Django] Form을 통해 사용자 리뷰 저장하기 (feat. Model 연결) 장고에서는 사용자의 입력을 받아서 데이터베이스에 저장하는 과정을 간단하게 처리할 수 있습니다.이번 포스팅에서는 Form과 Model을 연결해서 사용자 리뷰를 저장하는 과정을 하나씩 살펴보겠습니다.✅ 목표사용자로부터 이름, 리뷰 내용, 평점을 입력받는다유효성 검사를 한다models.py의 Review 모델에 데이터를 저장한다성공하면 /thank-you 페이지로 리디렉션한다📌 1. 모델 만들기 (models.py)from django.db import modelsclass Review(models.Model): user_name = models.CharField(max_length=100) review_text = models.TextField() rating = models.Integer.. 2025. 7. 24.
[Django] 🔐 CSRF 토큰, 어떻게 동작할까? 💡 CSRF 토큰은 무엇인가요?CSRF(Cross-Site Request Forgery)는사용자가 의도하지 않은 요청을 서버에 보내는 웹 공격 방식입니다.Django에서는 이를 막기 위해 CSRF 토큰이라는 보안 장치를 제공합니다.🔄 CSRF 토큰의 작동 원리✅ 1. 서버가 토큰을 생성하여 전송사용자가 페이지를 요청하면, Django는 CSRF 토큰을 생성해 HTML 내 에 포함시킵니다.이 토큰은 매번 다르며, 사용자의 세션과 연결되어 저장됩니다.✅ 2. 클라이언트는 요청 시 토큰을 포함해야 함사용자가 폼을 제출할 때, 같은 CSRF 토큰을 요청과 함께 전송해야 합니다.일반적으로 {% csrf_token %} 템플릿 태그를 사용하여 내부에 삽입합니다.✅ 3. 서버는 요청의 토큰을 검증서버는 요청에 .. 2025. 7. 24.