게시판 만들기 ver.2 (글쓰기,글상세)

팔리동·2021년 4월 5일
0
post-thumbnail

게시판 만들기 ver.2 -2

글쓰기 html

{% extends "base.html" %} {% block contents %}
<div class="row mt-5">
  <div class="col-12">
    <form method="POST" action=".">
      {% csrf_token %} {% for field in form %}
      <div class="form-group">
        <label for="{{ field.id_for_label }}">{{field.label}}</label>
        {{field.field.widget..name}} {% ifequal field.name 'contents' %}
        <textarea
          class="form-control"
          name="{{field.name}}"
          placeholder="{{field.label}}"
        ></textarea>
        {% else %}
        <input
          type="{{ field.field.widget.input_type }}"
          class="form-control"
          id="{{ field.id_for_label}}"
          placeholder="{{ field.label }}"
          name="{{field.name}}"
        />
        {% endifequal %}
      </div>
      {% if field.errors %}
      <span style="color: red">{{ field.errors }}</span>
      {% endif %} {% endfor %}
      <button type="submit" class="btn btn-primary">글쓰기</button>
    </form>
  </div>
</div>
{% endblock %}

글쓰기 view

def board_write(request):
    if request.method == 'POST': 
        form = BoardForm(request.POST)
        if form.is_valid():
        # 여기서 .session은 로그인할 때 저장된 값이다. 
            user_id = request.session.get('user')
            fcuser = Fcuser.objects.get(pk=user_id)

            board = Board()
            board.title = form.cleaned_data['title']
            board.contents = form.cleaned_data['contents']
            board.writer = fcuser
            board.save()

            return redirect('/board/list')
    else:
        form = BoardForm()

    return render(request, 'board_write.html', {'form': form})

글상세 html

{% extends "base.html" %} {% block contents %}
<div class="row mt-5">
  <div class="col-12">
    <div class="form-group">
      <label for="title">제목</label>
      <input
        type="text"
        class="form-control"
        id="title"
        value="{{board.title}}"
        readonly
      />
      <label for="contents">내용</label>
      <textarea class="form-control" readonly>{{board.contents}}</textarea>
    </div>
    <button class="btn btn-primary">돌아가기</button>
  </div>
</div>
{% endblock %}

글상세 urls

from django.urls import path
from . import views

urlpatterns = [
# int:pk는 pk를 정수형으로 변환한 것 
    path('detail/<int:pk>/', views.board_detail),
    path('list/', views.board_list),
    path('write/', views.board_write),
]

글상세 views

def board_detail(request, pk):
# 인자로 받은 pk로 Boaed모델의 pk에 맞는 객체를 뽑아온다. 그리고 html코드로 전달 
    board = Board.objects.get(pk=pk)
    return render(request, 'board_detail.html', {'board':board})
profile
배움의 기록

0개의 댓글

관련 채용 정보