[파이썬][Django] 사용자 입력 데이터 저장 방법과 예제
Django에서 사용자 입력 데이터를 데이터베이스에 저장하는 방법과 예제를 설명하겠습니다. 사용자 입력 데이터를 저장하려면 모델을 정의하고 데이터베이스에 저장할 필드를 지정해야 합니다.
모델 정의
-
모델 클래스 생성:
먼저, 데이터를 저장할 모델 클래스를 정의합니다. 모델 클래스는
models.Model
을 상속해야 합니다.
from django.db import models
class MyModel(models.Model):
name = models.CharField(max_length=100)
email = models.EmailField()
age = models.IntegerField()
-
마이그레이션 생성:
모델을 생성한 후에는 데이터베이스 스키마에 이를 적용하기 위해 마이그레이션을 생성합니다.
python manage.py makemigrations
python manage.py migrate
뷰에서 데이터 저장
-
뷰에서 데이터 저장:
데이터를 저장하려면 뷰에서 폼을 처리하고 데이터를 모델 인스턴스로 저장합니다.
from django.shortcuts import render, redirect
from .forms import MyForm
from .models import MyModel
def my_view(request):
if request.method == 'POST':
form = MyForm(request.POST)
if form.is_valid():
# 폼 데이터가 유효하면 모델 인스턴스 생성 및 저장
name = form.cleaned_data['name']
email = form.cleaned_data['email']
age = form.cleaned_data['age']
my_model_instance = MyModel(name=name, email=email, age=age)
my_model_instance.save()
return redirect('success_page')
else:
# 폼 데이터가 유효하지 않으면 오류 처리
return render(request, 'my_template.html', {'form': form})
else:
form = MyForm()
return render(request, 'my_template.html', {'form': form})
위의 예제에서는 유효한 데이터를 모델 인스턴스로 변환하고 `save()` 메서드를 사용하여 데이터베이스에 저장합니다. 또한, 오류가 발생하면 폼과 오류 메시지를 사용자에게 표시합니다.
예제
간단한 예제로, 이름, 이메일 및 나이를 입력받아 데이터베이스에 저장하는 폼과 뷰를 만들어보겠습니다.
- 모델 정의:
from django.db import models
class MyModel(models.Model):
name = models.CharField(max_length=100)
email = models.EmailField()
age = models.IntegerField()
- 폼 클래스 정의:
from django import forms
class MyForm(forms.Form):
name = forms.CharField(label='이름', max_length=100)
email = forms.EmailField(label='이메일')
age = forms.IntegerField(label='나이')
- 뷰에서 데이터 저장:
from django.shortcuts import render, redirect
from .forms import MyForm
from .models import MyModel
def my_view(request):
if request.method == 'POST':
form = MyForm(request.POST)
if form.is_valid():
name = form.cleaned_data['name']
email = form.cleaned_data['email']
age = form.cleaned_data['age']
my_model_instance = MyModel(name=name, email=email, age=age)
my_model_instance.save()
return redirect('success_page')
else:
return render(request, 'my_template.html', {'form': form})
else:
form = MyForm()
return render(request, 'my_template.html', {'form': form})
이러한 방법을 사용하면 사용자 입력 데이터를 Django 모델을 통해 데이터베이스에 저장할 수 있습니다. 데이터베이스 모델을 정의하고, 폼을 생성하여 데이터를 수집하고, 뷰에서 데이터를 처리하여 데이터베이스에 저장하는 흐름을 따릅니다.