-
카테고리
-
세부 분야
풀스택
-
해결 여부
해결됨
TypeError at /result/ result() missing 1 required positional argument: 'developer_id'
21.03.27 22:47 작성 조회수 889
1
TypeError at /result/
result() missing 1 required positional argument: 'developer_id'
Traceback
/workspace/mbittest/venv/lib/python3.7/site-packages/django/core/handlers/exception.py
, line 47, in inner
-
response = get_response(request)
…
-
-
response = wrapped_callback(request, *callback_args, **callback_kwargs)
…/workspace/mbittest/venv/lib/python3.7/site-packages/django/core/handlers/base.py
, line 181, in _get_response
-
템플릿 적용하기 파트에서 폼 체크 다 하고 제출 버튼 누르니까 저런 오류가 뜨는데요... 무엇이 문제인지 ㅠㅠ 모르겠습니다
답변을 작성해보세요.
0
Hojun Lee
지식공유자2021.03.28
코드를 확인해보니 리다이렉트 될 때 best_developer_id가 제대로 안들어가서 나는 애러입니다.
return redirect('main:result', developer_id=best_developer_id)
직접 접근을 일단 시도해보시겠어요?
/result/1 이런식으로요.
만약 직접 접속이 된다면 2가지 경우를 예측할 수 있을 것 같아요.
1. submit 연산식이 틀렸을 경우
확인을 해봤는데 코드가 저랑 같은 것 같아요. 저도 잘 못봤을 수 있으니 아래 최종 코드 보시면서 확인 부탁드립니다.
https://www.notion.so/2fca68d465b44ec8938ae1c08abf661a
2. DB에 입력된 값이 저랑 다를 경우
DB에 정상적으로 값이 모두 입력이 되어 있는지 확인 부탁드리고, 안되어 있으면 Database seeding을 통해 값을 넣어주세요.
0
Hojun Lee
지식공유자2021.03.27
혹시 챕터가 어떻게 될까요?
일단 코드 내용만 봐서는 뒤에 /result/1 이런식에 인자가 빠진것 같아요.
urls.py view.py 2개의 소스코드 전체를 업로드해주시면
확인해드리겠습니다. :)
s2019s11
질문자2021.03.27
<urls.py>
from django.contrib import admin
from django.urls import path
from main import views
urlpatterns = [
path('admin/', admin.site.urls),
path('', views.index),
path('form/', views.form),
path('result/', views.result),
]
---------------------------
<view.py>
from django.shortcuts import render, redirect
from .models import Question, Developer, Choice
def index(request):
developers = Developer.objects.all()
context = {
'developers' : developers,
}
return render(request, 'main/index.html', context=context)
def form(request):
questions = Question.objects.all()
context = {
'questions' : questions,
}
return render(request, 'main/form.html', context=context)
def submit(request):
# 문항 수
N = Question.objects.count()
# 개발자 유형 수
K = Developer.objects.count()
counter = [0] * (K + 1)
for n in range(1, N+1):
developer_id = int(request.POST[f'question-{n}'][0])
counter[developer_id] += 1
# 최고점 개발 유형
best_developer_id = max(range(1, K+1), key=lambda id : counter[id])
best_developer = Developer.objects.get(pk=best_developer_id)
best_developer.count += 1
best_developer.save()
context = {
'developer' : best_developer,
'counter' : counter
}
return redirect('main:result', developer_id=best_developer_id)
def result(request, developer_id):
developer = Developer.objects.get(pk=developer_id)
context = {
'developer' : developer,
}
return render(request, 'main/result.html', context=context)
입니다! ㅠㅠ
답변 2