장고에서 try - except 구문 질문입니다
인터넷은 검색하면서 챗봇 만들기를 따라하다보니 결국은 장고를 알아야 하는 시점에 이르게 되었습니다.
파이썬도 완벽하게 숙지하지 않은 상태에서 장고를 하려니 좀 어렵습니다.
대략적인 코드의 내용은 POST로 input1
을 받아서 이미 만들어둔 함수인 faq_answer
에 넣고, 그 출력값을 response
에 다시 넣어서 돌려주는 내용 같습니다.
@csrf_exempt
def chat_service(request):
if request.method == 'POST':
input1 = request.POST['input1']
response = faq_answer(input1)
try:
output = dict()
output['response'] = response
return HttpResponse(json.dumps(output), status=200)
except:
output = dict()
output['response'] = '비슷한 질문에 대한 답변이 없습니다'
return HttpResponse(json.dumps(output), status=200)
else:
return render(request, 'addresses/chat_test.html')
그런데요, try
- except
구문에서 이해가 잘 안 됩니다. try
의 첫 번째 줄인 output = dict()
는 왜 둘 다 있는지 모르겠습니다. 이 부분에서 오류가 나면 except
로 가는 건가요?
아니면 try
마지막 줄에서 return HttpResponse(json.dumps(output), status=200)
부분에서 오류가 나면 except
로 가는 건가요? 그런데 만약 이 부분이 오류라면 왜 except
에도 동일하게 있는 건지 궁금합니다.
try
except
예문을 보면 간단하게 쓰여 있는데 막상 실제로 챗봇에 쓰이는 try
except
부분을 보니 응용이 안 됩니다. ㅠㅠ
작년 말 ~ 올 초에 점프 투 파이썬 웹 버전 책을 잘 봤었는데요, 이젠 장고도 만들어주시다니 그저 감사할 따름입니다.
감사합니다.
kungmo 님 603
M 2020년 7월 13일 9:14 오전
1개의 답변이 있습니다. 1 / 1 Page
안녕하세요.
output=dict()
문장에서는 오류가 발생할게 없네요.
try 문장안에서 오류가 발생한다면 아마도 다음 부분일 것입니다.
return HttpResponse(json.dumps(output), status=200)
output을 json으로 만드는 과정중에 output이 json으로 변환할 수 없는 값이 들어 있을 경우 오류가 발생할 수 있을 것 같습니다.
except
부분에서는 output 값이 하드코딩되어 있어서 오류날 게 없네요.
박응용 님
2020년 7월 13일 9:34 오전