23. 글 작성 완료 - eungyukm/DjangoBase GitHub Wiki

글 작성 완료

  1. 글 작성이 완료 되면, 글 번호를 파라미터로 받을 것 입니다.
  • 글 번호를 기준으로 내림차순 정렬
  • 컬럼 명만 적어주면 됩니다.
@csrf_exempt
def board_write_result(request) :
    content_subject = request.POST['board_subject']
    content_text = request.POST['board_content']
    content_date = timezone.localtime()

    content_writer_idx = request.session['login_user_idx']
    # 외래키(BoardInfoTable의 PK 컬럼을 참조한다)
    content_board_idx = request.POST['board_info_idx']

    content_model = board_app.models.ContentTable()
    content_model.content_subject = content_subject
    content_model.content_text = content_text
    content_model.content_date = content_date

    content_writer_model = user_app.models.UserTable.objects.get(user_idx=content_writer_idx)
    content_board_model = board_app.models.BoardInfoTable.objects.get(board_info_idx = content_board_idx)

    content_model.content_writer_idx = content_writer_model
    content_model.content_board_idx = content_board_model

    # 업로드된 파일 명을 가져옵니다.
    content_model.content_file = request.FILES.get('board_file')

    content_model.save()

    content_model2 = board_app.models.ContentTable.objects.all().order_by('-content_idx')[0]
    # print(content_model2.content_idx)
    # 정렬한 데이터의 가장 최근 데이터로 정렬한다.

    message = f'''
            <script>
                alert('저장되었습니다')
                locaiton.href = '/board/board_read?board_info_idx={content_board_idx}&content_idx={content_model2.content_idx}'
            </script>
            '''
    return HttpResponse(message)
  1. 글 읽는 페이지 구성
def board_read(request):

    # 파라미터 데티어를 추출
    board_info_idx = request.GET['board_info_idx']
    content_idx = request.GET['content_idx']

    # 현재 글 정보를 가져옵니다.
    # 외래키 관계로 묶여 있으므로 select_related 함수를 사용합니다.
    content_model = board_app.models.ContentTable.objects.select_related('content_writer_idx', 'content_board_idx').get(content_idx=content_idx)


    template = loader.get_template('board_write.html')
    render_data = {
        'content_data' : content_model,
        'board_info_idx' : board_info_idx,
        'content_idx' : content_idx
    }
    return HttpResponse(template.render(render_data, request))
  1. 첨부 이미지
{% if content_data.content_file %}
<div class="form-group">
 <label for="board_file">첨부 이미지</label>
 <img src="{{content_data.content_file.url}}" width="100%"/>						
</div>
{% endif %}
  1. board_app/urls.py 파일에 미디어 파일의 위치를 등록합니다.
from django.conf import settings
from django.contrib import admin
from django.urls import path
from django.urls import include
from django.urls import static

urlpatterns = [
    path('admin/', admin.site.urls),
    # 주소만 입력했을 경우(메인 페이지)
    path('', include('main_app.urls')),
    # 사용자 관련
    path('user/', include('user_app.urls')),
    # 게시판 관룐
    path('board/', include('board_app.urls')),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
⚠️ **GitHub.com Fallback** ⚠️