如何在此处传递 Id(错误 put() 缺少 1 个必需的位置参数:'request')在表单模板 Django 中

阿扎尔·乌丁·谢赫

网址.py

from django.urls import path
from . import views

app_name = "poll"

urlpatterns = [
    path('', views.index, name="index"),  # listing the polls
    path('<int:id>/edit/', views.put, name='poll_edit'), ]

视图.py

def put(self, request, id):
    # print("catching error ")  error before this line
    question = get_object_or_404(Question, id=id)
    poll_form = PollForm(request.POST, instance=question)
    choice_forms = [ChoiceForm(request.POST, prefix=str(
        choice.id), instance=choice) for choice in question.choice_set.all()]
    if poll_form.is_valid() and all([cf.is_valid() for cf in choice_form]):
        new_poll = poll_form.save(commit=False)
        new_poll.created_by = request.user
        new_poll.save()
        for cf in choice_form:
            new_choice = cf.save(commit=False)
            new_choice.question = new_poll
            new_choice.save()
        return redirect('poll:index')
    context = {'poll_form': poll_form, 'choice_forms': choice_forms}
    return render(request, 'polls/edit_poll.html', context)

edit_poll.html

{% extends 'base.html' %}
{% block content %}
<form method="PUT" >
    {% csrf_token %}
<table class="table table-bordered table-light">

    {{poll_form.as_table}}
    
    {% for form in choice_forms %}
         {{form.as_table}}
    {% endfor %}
    
    
</table>
    <button type="submit" class="btn btn-warning float-right">Update</button>
</form>
{% endblock content %}

这是错误

line 181, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)

Exception Type: TypeError at /polls/9/edit/
Exception Value: put() missing 1 required positional argument: 'request'

我知道我没有在 html 中传递参数,但我不知道如何在 html 中传递 id 参数,请帮助我任何单行代码,例如 default (由 Django 传递上下文)

威廉·范·翁塞姆

您正在定义一个简单的函数,而不是类中的方法,因此您应该删除self参数:

# no self ↓
def put(request, id):
    # …

请注意,您对 the 所做的choice_forms基本上是FormSet[Django-doc] 所做的

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章