- 파일 업로드 설정
- settings.py 파일에 저장될 경로를 지정합니다.
# 업로드 폴더 위치
MEDIA_URL = '/upload/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'upload')
- board_app/models/ContentTable에 있는 content_file을 FiledField로 변경합니다.
content_file = models.FileField(upload_to='files/', null=True)
- 마이그레이션 수행합니다.
python3 manage.py makemigrations
python3 manage.py migrate
04. board_app/temlplates/board_write.html에 있는 form 태그에 multipart-formdata 설정을 합니다.
```
- board_app/views.py의 board_write_result 함수에 파일 처리를 해줍니다.
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))
@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()
message = '''
<script>
alert('저장되었습니다')
locaiton.href = '/board/board_read'
</script>
'''
return HttpResponse(message)