[파이썬][Django] 사용자 입력 데이터 저장 방법과 예제

Django에서 사용자 입력 데이터를 데이터베이스에 저장하는 방법과 예제를 설명하겠습니다. 사용자 입력 데이터를 저장하려면 모델을 정의하고 데이터베이스에 저장할 필드를 지정해야 합니다.

모델 정의

  1. 모델 클래스 생성:

    먼저, 데이터를 저장할 모델 클래스를 정의합니다. 모델 클래스는 models.Model을 상속해야 합니다.

from django.db import models
    
    class MyModel(models.Model):
        name = models.CharField(max_length=100)
        email = models.EmailField()
        age = models.IntegerField()
  1. 마이그레이션 생성:

    모델을 생성한 후에는 데이터베이스 스키마에 이를 적용하기 위해 마이그레이션을 생성합니다.

python manage.py makemigrations
    python manage.py migrate

뷰에서 데이터 저장

  1. 뷰에서 데이터 저장:

    데이터를 저장하려면 뷰에서 폼을 처리하고 데이터를 모델 인스턴스로 저장합니다.

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()` 메서드를 사용하여 데이터베이스에 저장합니다. 또한, 오류가 발생하면 폼과 오류 메시지를 사용자에게 표시합니다.

예제

간단한 예제로, 이름, 이메일 및 나이를 입력받아 데이터베이스에 저장하는 폼과 뷰를 만들어보겠습니다.

  1. 모델 정의:
from django.db import models

class MyModel(models.Model):
    name = models.CharField(max_length=100)
    email = models.EmailField()
    age = models.IntegerField()
  1. 폼 클래스 정의:
from django import forms

class MyForm(forms.Form):
    name = forms.CharField(label='이름', max_length=100)
    email = forms.EmailField(label='이메일')
    age = forms.IntegerField(label='나이')
  1. 뷰에서 데이터 저장:
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 모델을 통해 데이터베이스에 저장할 수 있습니다. 데이터베이스 모델을 정의하고, 폼을 생성하여 데이터를 수집하고, 뷰에서 데이터를 처리하여 데이터베이스에 저장하는 흐름을 따릅니다.