웹 프로그래밍

[pinterest clone (11)] POST 통신을 이용한 DB 데이터 저장

728x90
반응형

1. Send POST data

2. Receive POST data

3. Save DB

 

 

1

hello_world.html

{% extends 'base.html' %}

{% block content %}

    <div style="border-radius: 1rem; margin: 2rem; text-align:center;">
        <h1 style="font-family: 'Dancing Script', cursive;">
            Hello World List
        </h1>
        <form action="/account/hello_world/" method="post">
            {% csrf_token %}
            <div>
                <input type="text" name="hello_world_input">
            </div>
            <div>
                <input type="submit" class="btn btn-primary" value="POST">
            </div>
        </form>
        <h1>
            {{ text }}
        </h1>
    </div>

{% endblock %}

hello_world_input 받아서 text에 넣고 출력하기

 

views.py

from django.http import HttpResponse
from django.shortcuts import render


def hello_world(request):

    if request.method == "POST":
        temp = request.POST.get('hello_world_input')
        return render(request, 'accountapp/hello_world.html', context={'text': temp})

    else:
        return render(request, 'accountapp/hello_world.html', context={'text': 'GET METHOD!!!'})

2

데이터를 db에 저장해보자

views.py

from django.shortcuts import render

from accountapp.models import HelloWorld


def hello_world(request):

    if request.method == "POST":
        temp = request.POST.get('hello_world_input')

        new_hello_world = HelloWorld()
        new_hello_world.text = temp
        new_hello_world.save()


        return render(request, 'accountapp/hello_world.html', context={'hello_world_output': new_hello_world})


    else:
        return render(request, 'accountapp/hello_world.html', context={'text': 'GET METHOD!!!'})

Model에서 만든 HelloWorld 모델에서 나온 HelloWorld() 객체를 new_hello_world에 저장하고

class HelloWorld(models.Model):
    text = models.CharField(max_length=255, null=False)

text 필드에 temp를 저장 (입력해준 hello_world_input을 저장)

그리고 db에 new_hello_world.save()로 저장까지.

 

hello_world.html

{% extends 'base.html' %}

{% block content %}

    <div style="border-radius: 1rem; margin: 2rem; text-align:center;">
        <h1 style="font-family: 'Dancing Script', cursive;">
            Hello World List
        </h1>
        <form action="/account/hello_world/" method="post">
            {% csrf_token %}
            <div>
                <input type="text" name="hello_world_input">
            </div>
            <div>
                <input type="submit" class="btn btn-primary" value="POST">
            </div>
        </form>

        {% if hello_world_output %}
        <h1>
            {{ hello_world_output.text }}
        </h1>
        {% endif %}
    </div>

{% endblock %}

: hello_world_output이 있다면 text로 h1 만들어라

 

 

728x90
반응형