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/') #호출