Django TypeError得到了一个意想不到的关键字参数' opcao_id'

时间:2016-04-07 15:19:12

标签: python html django django-views

好的,所以我试图删除一个" opcao"与a" questao"相关 在我的HTML中,我有这个按钮:

<a href="{% url 'votacao:apagaopcao' questao.id %}">
    <button> Apagar Opção </button>
</a>

导致这个网址:

url(r'^(?P<opcao_id>[0-9]+)/apagaopcao/$', views.apagaopcao, name="apagaopcao"),

这就是观点:

def apagaopcao(request, opcao_id, questao_id):
questao = get_object_or_404(Questao, pk=questao_id)
try:
    opcao_seleccionada = questao.opcao_set.get(pk=request.POST['opcao'])
except (KeyError, Opcao.DoesNotExist):
    # Apresenta de novo o form para votar
    return render(request, 'votacao/detalhe.html', {'questao': questao, 'error_message': "Não escolheu uma opção",})
else:
    opcao_seleccionada.delete()
    return render(request, 'votacao/detalhe.html', {'questao': questao})

它引发了我的异常:

Exception Type: TypeError
Exception Value: apagaopcao() missing 1 required positional argument: 'questao_id'

我刚刚开始尝试将django弄出来,所以我在这里缺少什么?谢谢!!

1 个答案:

答案 0 :(得分:2)

您只在网址定义中定义了一个命名参数opcao_id,但您在视图opcao_idquestao_id中有2个参数,这当然不起作用。您应该在网址定义中添加questao_id,或者从视图功能中删除它。

检查django doc on how url parameters work with views function