본문 바로가기
Django

[Django] DB 가져와서 CRUD(6) - 데이터 추가하기(C)

by 기록하는_사람 2022. 12. 19.

데이터 추가하기

📌 index 페이지에 데이터 추가 버튼 생성.

① index.html에 버튼 생성.

(index.html)

<h1>INDEX PAGE</h1>

<a href="{% url 'create' %}"><button>CREATE</button></a><br><br>
...

 

② urls.py에 path 추가.

(books/urls.py)

from django.urls import path
from . import views

urlpatterns = [
    path('index/', views.index, name="index"),
    path('detail/<bpk>', views.detail, name="detail"),
    path('delete/<bpk>', views.delete, name="delete"),
    path('create/', views.create, name="create"),
]

 

③ views.py에 함수 추가.

(books/views.py)

...
def create(request):
    return render(request, "books/create.html")

 

④ templates/books 폴더에 create.html 생성.

(create.html)

<h1>CREATE PAGE</h1>

<form method="post" name="createForm">
    {% csrf_token %}
    <b>제목</b><input name="bname" type="text" value="{{ b.name }}"><br><br>
    <b>지은이</b><input name="bwriter" type="text" value="{{ b.writer }}"><br><br>
    <b>내용</b><br><textarea name="bcontent" cols="80" rows="8">{{ b.content }}</textarea><br><br>
    
    <button type="button" onclick="check()">DONE</button>
    <a href="{% url 'index' %}"><button type="button">HOME</button></a>
</form>

<script>
    function check() {
        cf = document.createForm;
        if(!cf.bname.value) {
            alert("제목을 입력하세요!")
        }
        else if(!cf.bwriter.value) {
            alert("지은이를 입력하세요!")
        }
        else if(!cf.bcontent.value) {
            alert("내용을 입력하세요!")
        }
        else {
            cf.submit()
        }
    }
</script>

 

⑤ views.py에서 create구현 추가.

(books/views.py)

...
def create(request):
    if request.method == "POST":
        bn = request.POST.get("bname")
        bw = request.POST.get("bwriter")
        bc = request.POST.get("bcontent")
        Books(name=bn, writer=bw, content=bc).save()
        return redirect("index")
    return render(request, "books/create.html")

 

데이터 추가하기 - 결과

📌 데이터 추가하기 - 결과

 

댓글