ERROR/SQL

ValueError at /insert/The view board.views.insert didn't return an HttpResponse object. It returned None instead.

onlyun 2022. 7. 6. 10:36

 

쟝고로 웹 게시판 만드는데

ValueError at /insert/
The view board.views.insert didn't return an HttpResponse object. It returned None instead.
Request Method:	POST
Request URL:	http://localhost/insert/
Django Version:	4.0.5
Exception Type:	ValueError
Exception Value:	
The view board.views.insert didn't return an HttpResponse object. It returned None instead.
Exception Location:	C:\Users\admin\anaconda3\lib\site-packages\django\core\handlers\base.py, line 332, in check_response
Python Executable:	C:\Users\admin\anaconda3\python.exe
Python Version:	3.9.12
Python Path:	
['D:\\work\\django\\pyweb_board',
 'C:\\Users\\admin\\anaconda3\\python39.zip',
 'C:\\Users\\admin\\anaconda3\\DLLs',
 'C:\\Users\\admin\\anaconda3\\lib',
 'C:\\Users\\admin\\anaconda3',
 'C:\\Users\\admin\\anaconda3\\lib\\site-packages',
 'C:\\Users\\admin\\anaconda3\\lib\\site-packages\\win32',
 'C:\\Users\\admin\\anaconda3\\lib\\site-packages\\win32\\lib',
 'C:\\Users\\admin\\anaconda3\\lib\\site-packages\\Pythonwin']
Server time:	Wed, 06 Jul 2022 10:27:29 +0900

 

위와 같은 에러가 떴음.

return 아래에 있던 주석의 위치를 위로 변경하니 됐음.

from django.shortcuts import render, redirect
from django.views.decorators.csrf import csrf_exempt

from board.models import Board


#파일 저장될 경로
UPLOAD_DIR = 'D:/work/django/upload/'

# Create your views here.
#글 리스트 페이지
def list(request):
    boardCount = Board.objects.count()
    boardList = Board.objects.all().order_by("-idx")
    return render(request, "board/list.html", 
                  {"boardList":boardList, "boardCount":boardCount})

#render(request, 렌더링할 페이지, 렌더링할 페이지를 json 형식으로 보냄)    
#-idx : 내림차순 정렬 / idx : 오름차순 정렬
#경로 : default가 templates. 디폴트 폴더인 templates는 생략 가능

#글쓰기 페이지
def write(request):
    return render(request, 'board/write.html')

@csrf_exempt #보안 토큰 관련 
def insert(request):
    fname = ''
    fsize=0

#파일 업로드
    if 'file' in request.FILES:
        #write.html에 name='file'이 있는지 확인
        file = request.FILES['file']
        fname = file.name
        fsize = file.size

#파일을 업로드하는 디렉토리 필요 : 맨 위에 생성(↑)
        fp = open("%s%s"%(UPLOAD_DIR, fname), 'wb')
        for chunk in file.chunks():
            fp.write(chunk)
        fp.close()
#wb : write binary
#chunk : 파일에서 기록되는 단위 블록
        #POST로 전달된 것 중 wirter/title/content를 변수에 저장
        w = request.POST['writer']
        t = request.POST['title']
        c = request.POST['content']
        
        #객체로 저장해 리턴
        dto = Board(writer=w, title=t, content=c, filename=fname, filesize=fsize)
        dto.save()
        
        #redirect는 render를 import한 것에서 추가만 해주면 됨
        return redirect('/list/') #호출