- board_app/views.py
from curses import def_prog_mode
from tempfile import template
from django.shortcuts import render
from django.http import HttpResponse
from django.template import loader
# Create your views here.
def board_main(request) :
template = loader.get_template('board_main.html')
render_data = {
}
return HttpResponse(template.render(render_data, request))
# board/board_modify
def board_modify(request) :
template = loader.get_template('board_modify.html')
render_data = {
}
return HttpResponse(template.render(render_data, request))
# board/board_read
def board_read(request):
template = loader.get_template('board_write.html')
render_data = {
}
return HttpResponse(template.render(render_data, request))
# board/board_write
def board_write(request):
template = loader.get_template('board_write.html')
render_data = {
}
return HttpResponse(template.render(render_data, request))
- /board/board_main에서 게시판 이름이 나오도록 합니다.
board_app/views.py의 board_main 함수에 board_info_idx 파라미터를 추출한 후에 게시판 이름 데이터를 가져옵니다.
그후, board_app/templates/board_main.html 파일의 게시판 이름에 적용해 줍니다.
def board_main(request) :
# 파라미터를 추출합니다.
board_info_idx = request.GET['board_info_idx']
# 현재 게시판 정보를 가져옵니다.
board_model = board_app.models.BoardInfoTable.objects.get(board_info_idx=board_info_idx)
template = loader.get_template('board_main.html')
render_data = {
'board_data' : board_model
}
return HttpResponse(template.render(render_data, request))
<h4 class="card-title">{{board_data.board_info_name}}</h4>
- board_app/templates/board_main.html 파일에 글쓰기 링크에
board_info_idx 파라미터를 붙여줍니다.
def board_main(request) :
# 파라미터를 추출합니다.
board_info_idx = request.GET['board_info_idx']
# 현재 게시판 정보를 가져옵니다.
board_model = board_app.models.BoardInfoTable.objects.get(board_info_idx=board_info_idx)
template = loader.get_template('board_main.html')
render_data = {
'board_data' : board_model,
'board_info_idx' : board_info_idx,
}
return HttpResponse(template.render(render_data, request))
<a href="/board/board_write?board_info_idx={{board_info_idx}}" class="btn btn-primary">글쓰기</a>
- 저장 처리를 수행합니다.
- board_app/templates/board_write.html의 form 태그의 주소를 설정합니다.
- csrf_token 설정을 해줍니다.
<form action="/board/board_write_result" method="post">
{% csrf_token %}
- board_write.html의 form 태그에 input type hidden으로 게시판 번호를 설정해 줍니다.
def board_write(request):
# 파라미터를 추출합니다.
board_info_idx = request.GET['board_info_idx']
template = loader.get_template('board_write.html')
render_data = {
'board_info_idx' : board_info_idx
}
return HttpResponse(template.render(render_data, request))
<input type="hidden" name="board_info_idx" value="{{board_info_idx}}"/>
- url을 아래와 같이 처리합니다.
from django.urls import path
from . import views
from django.urls import include
urlpatterns = [
path('board_main', views.board_main, name='board_main'),
path('board_modify', views.board_main, name='board_modify'),
path('board_read', views.board_main, name='board_read'),
path('board_write', views.board_write, name='board_write'),
]
- board_app/urls.py 파일에 /board/board_write_result 주소를 등록합니다.
from django.urls import path
from . import views
from django.urls import include
urlpatterns = [
path('board_main', views.board_main, name='board_main'),
path('board_modify', views.board_main, name='board_modify'),
path('board_read', views.board_main, name='board_read'),
path('board_write', views.board_write, name='board_write'),
path('board_write_result', views.board_write_result, name='board_write_result'),
]
- board_app/views.py 파일에 board_write_result 함수를 작성하고
파라미터 데이터를 추출해 저장하는 작업을 합니다.
파일 첨부처리는 하지 않는다.
장고에서 외래키 관계로 묶여있을 경우, 객체를 넣어야 합니다.
@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.save()
message = '''
<script>
alert('저장되었습니다')
locaiton.href = '/board/board_read'
</script>
'''
return HttpResponse(message)