Django: передать для отображения контекста FORM и PK PARAMETER - PullRequest
1 голос
/ 04 февраля 2020

Я новичок в Django, и я действительно не могу понять, что не так в моем коде. Мне нужно открыть страницу, где пользователь может проверить, что он ранее создал. В статье он может сохранить столько заголовков, сколько он пожелает, с помощью topi c ярлыков. На странице, которая откроется, будут показаны тексты и метки, а также будет предложено обновить объекты.

У меня есть в url.py

urlpatterns = [

    path(r'^home/check/(?P<pk>\d+)/$', TextUpdate, name='check'),

]

Где pk - идентификатор статьи. , Я создаю набор форм, который фильтрует набор запросов, ссылающийся на ссылку на нашу статью. Я имею в моем views.py

@login_required
def TextUpdate(request, *args, **kwargs):
    pk = kwargs.pop('pk')

    link = get_object_or_404(Link, link_id=pk)
    user_p = UserProfile.objects.filter(user=request.user).first()

    qs=Text.objects.filter(text_link=link.url,user=user_p)

    TextFormSet = modelformset_factory(Text, form=UpdateTextForm)



    if request.method == 'POST':
        formset = TextFormSet(request.POST,queryset=qs)


        if formset.is_valid():
            formset.save()
            return redirect('next_view')
    else:
        formset=TextFormSet(queryset=qs)

    context = {
        "formset": formset,
        "pk": pk
    }
    return render(request, 'news/Text/check.html', context)

И у меня есть в моем шаблоне:

<form  method="get" >
    {% for form in formset %}
    {{ form.as_p }}
    {% endfor %}
    <input type="submit" value="save">
</form>

Но, похоже, я не могу передать ни мою форму, ни ПК. Ошибка говорит:

Template error:
In template \PycharmProjects\My_Dashboard-master\news\templates\news\Text\check.html, error at line 11
   __init__() missing 1 required positional argument: 'pk'
   1 : <!DOCTYPE html>
   2 : <html lang="en">
   3 : <head>
   4 :     <meta charset="UTF-8">
   5 : </head>
   6 : <body>
   7 : {{pk}}
   8 : 
   9 : 
   10 : <form  method="get" >
   11 :      {% for form in formset %} 
   12 :     {{ form.as_p }}
   13 :     {% endfor %}
   14 :     <input type="submit" value="save">
   15 : </form>
   16 : </body>
   17 : </html>

Traceback:

File "C:\Users\Utente1\venv\lib\site-packages\django\core\handlers\exception.py" in inner
  34.             response = get_response(request)

File "C:\Users\Utente1\venv\lib\site-packages\django\core\handlers\base.py" in _get_response
  126.                 response = self.process_exception_by_middleware(e, request)

File "C:\Users\Utente1\venv\lib\site-packages\django\core\handlers\base.py" in _get_response
  124.                 response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "C:\Users\Utente1\venv\lib\site-packages\django\contrib\auth\decorators.py" in _wrapped_view
  21.                 return view_func(request, *args, **kwargs)

File "PycharmProjects\My_Dashboard-master\news\views.py" in TextUpdate
  176.     return render(request, 'news/Text/check.html', context)

File "C:\Users\Utente1\venv\lib\site-packages\django\shortcuts.py" in render
  36.     content = loader.render_to_string(template_name, context, request, using=using)

File "C:\Users\Utente1\venv\lib\site-packages\django\template\loader.py" in render_to_string
  62.     return template.render(context, request)

File "C:\Users\Utente1\venv\lib\site-packages\django\template\backends\django.py" in render
  61.             return self.template.render(context)

File "C:\Users\Utente1\venv\lib\site-packages\django\template\base.py" in render
  171.                     return self._render(context)

File "C:\Users\Utente1\venv\lib\site-packages\django\template\base.py" in _render
  163.         return self.nodelist.render(context)

File "C:\Users\Utente1\venv\lib\site-packages\django\template\base.py" in render
  937.                 bit = node.render_annotated(context)

File "C:\Users\Utente1\venv\lib\site-packages\django\template\base.py" in render_annotated
  904.             return self.render(context)

File "C:\Users\Utente1\venv\lib\site-packages\django\template\defaulttags.py" in render
  166.             len_values = len(values)

File "C:\Users\Utente1\venv\lib\site-packages\django\forms\formsets.py" in __len__
  75.         return len(self.forms)

File "C:\Users\Utente1\venv\lib\site-packages\django\utils\functional.py" in __get__
  37.         res = instance.__dict__[self.name] = self.func(instance)

File "C:\Users\Utente1\venv\lib\site-packages\django\forms\formsets.py" in forms
  136.                  for i in range(self.total_form_count())]

File "C:\Users\Utente1\venv\lib\site-packages\django\forms\formsets.py" in <listcomp>
  136.                  for i in range(self.total_form_count())]

File "C:\Users\Utente1\venv\lib\site-packages\django\forms\models.py" in _construct_form
  620.         form = super()._construct_form(i, **kwargs)

File "C:\Users\Utente1\venv\lib\site-packages\django\forms\formsets.py" in _construct_form
  172.         form = self.form(**defaults)

Exception Type: TypeError at /^home/check/(?P177\d+)/$
Exception Value: __init__() missing 1 required positional argument: 'pk'

Я уже пробовал разные вещи, но ничего не работает. Пожалуйста помоги! Спасибо всем <3 </p>

...