백엔드
Django에 대하여(15)_ORM with view(Create)
데이터분석가 이채은
2024. 4. 5. 09:00
1. Create
Create 로직을 구현하기 위해 필요한 view 함수의 개수는 몇 개일까요? 사용자 입력 데이터를 받을 페이지를 렌더링 하는 new와 사용자가 입력한 데이터를 받아 DB에 저장하는 create, 이렇게 두 가지가 있습니다.
1-1 new 기능 구현
# articles/urls.py
urlpatterns = [
...
path('new/', views.new, name='new')
]
# articles/views.py
def new(request):
return render(request, 'articles/new.html')
<!-- template/articles/new.html -->
<h1>NEW</h1>
<form action="#" method="GET">
<div>
<label for="title">Title: </label>
<input type="text" name="title" id="title>
</div>
<label for "content">Content: </label>
<textarea name="content" id="content"></textarea>
</div>
<input type="submit">
</form>
<hr>
<a href="{% url 'articles:index' %}">[back]</a>
<!-- templates/articles/index.html -->
<h1>Articles</h1>
<a href="{% url 'articles:new' %}">NEW</a>
<hr>
...
1-2 create 기능 구현
# articles/urls.py
urlpatterns = [
...
path('create/', views.create, name='create')
]
# articles/views.py
def create(request):
title = request.GET.get('title')
content = request.GET.get('content')
# 1.
# article = Article()
# article.title = title
# article.content = content
# article.save()
# 2.
articles = Article(title=title, content=content)
article.save()
# 3.
# Article.objects.create(title=title, content=content)
return render(request, 'articles/create.html')
<!-- templates/articles/create.html -->
<h1>게시글이 작성 되었습니다.</h1>
<!-- template/articles/new.html -->
<h1>NEW</h1>
<form action="{% url 'articles:create' %}" method="GET">
<div>
<label for="title">Title: </label>
<input type="text" name="title" id="title>
</div>
<label for "content">Content: </label>
<textarea name="content" id="content"></textarea>
</div>
<input type="submit">
</form>
<hr>
<a href="{% url 'articles:index' %}">[back]</a>