[회고] 신입 iOS 개발자가 되기까지 feat. 카카오 자세히보기

🛠 기타/WEB

django 기초 - model에 데이터 추가하기

inu 2020. 8. 23. 17:02
반응형

model에 데이터 추가하기

모델명.objects.create() 
  • 모델명.objects.create() 를 사용하여 데이터를 추가한다.
  • views.py에서 수행하게 되는데, 보통 request의 요청을 확인하여 데이터가 담겨있을 경우(요청이 POST일 경우) 그를 활용해 model에 데이터를 추가해주곤 한다.
  • 아래는 활용 예시이다.

models.py

class Student(models.Model):
    name = models.CharField(max_length=30)
  • model에는 Student라고하는 모델데이터가 존재한다.

views.py

from django.shortcuts import redirect, render
from .models import Student
# Create your views here.

def home(request):
    return render(request, 'home.html')

def result(request):
    name = request.POST['username']
    students = Student.objects.all()
    is_exist = False
    for student in students:
        if student.name == name:
            is_exist = True
            break        

    return render(request, 'result.html', {'user_name': name, 'is_exist':is_exist})

def add(request):
    if request.method == 'POST':
        Student.objects.create(
            name = request.POST['name']
        )
        return redirect('home')
    return render(request, 'add.html')
  • home은 html내부에서 username이라고 하는 값을 result에 넘겨준다.
  • result에서는 Student에 등록된 데이터를 확인하여 username의 존재여부를 체크해준다.
  • add는 POST 요청을 받아 그 곳에 담긴 name 데이터로 model에 새로운 데이터를 등록한다. 그리고 redirect메소드로 home으로 이동한다.

result.html

<body>
    <h1>결과</h1>
    {% if is_exist %}
        {{user_name}}은 있어요!
    {% else %}
        {{user_name}}은 없어요!
    {% endif %}
    </br>
    <a href="{% url 'add' %}">신규등록</a>
</body>
  • a태그로 add페이지로 이동하게 된다.

add.html

<body>
    <form action="{% url 'add' %}" method="POST">
        {% csrf_token %}
        <input placeholder="이름을 입력하세요" name="name"/>
        <button type="submit">최종등록</button>
    </form>
</body>
  • 이름을 입력받고 자기자신에게 POST 요청을 보낸다.
  • views.py의 add 함수에서 method가 POST일 경우 새로운 데이터를 생성하고 home 페이지로 이동하도록 했다.

결과

  • 추가 전


  • 추가


  • 추가 후

반응형