Я новичок в 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>