• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    해결됨

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

  1.                 response = get_response(request)
    1.                 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

템플릿 적용하기 파트에서 폼 체크 다 하고 제출 버튼 누르니까 저런 오류가 뜨는데요... 무엇이 문제인지 ㅠㅠ 모르겠습니다

답변 2

·

답변을 작성해보세요.

0

코드를 확인해보니 리다이렉트 될 때 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을 통해 값을 넣어주세요.

s2019s11님의 프로필

s2019s11

질문자

2021.03.28

해결됐습니다!! 감사합니다 ㅠㅠ

0

혹시 챕터가 어떻게 될까요?

일단 코드 내용만 봐서는 뒤에 /result/1 이런식에 인자가 빠진것 같아요.

urls.py view.py 2개의 소스코드 전체를 업로드해주시면

확인해드리겠습니다. :) 

s2019s11님의 프로필

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)

    입니다! ㅠㅠ