데이터 분석 기술 블로그

Django에 대하여(15)_ORM with view(Create) 본문

백엔드

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>
...

new 페이지로 이동할 수 있는 하이퍼링크 작성

 

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>

결과