Как и в заголовке, я не знаю, как я могу проверить, является ли в ответе представление с формой или без нее, потому что, по моему мнению, пользователь получает форму только в том случае, если request.user.is_authenticated.
##views.py
def product_detail(request, id, slug):
product = get_object_or_404(Product, id=id, slug=slug,)
comments = product.comments.all()
if request.user.is_authenticated:
if request.method == 'POST':
form = CommentForm(request.POST)
if form.is_valid():
new_comment = form.save(commit=False)
new_comment.product = product
new_comment.nick = get_object_or_404(User, id=str(request.user.id))
form.save()
return redirect('product_detail', id=product.id, slug=product.slug)
else:
form = CommentForm()
return render(request, 'shop/product/Product_detail.html',
{'product': product, 'form': form, 'comments': comments})
else:
return render(request, 'shop/product/Product_detail.html',
{'product': product, 'comments': comments})
У меня есть тест на просмотр, чтобы проверить, загружаются ли представления, но как аутентифицированные, так и не аутентифицированные пользователи имеют доступ к этому представлению, единственное отличие состоит в том, что не прошедшие проверку пользователи получают представление без формы, и я не знаю, как это проверить.
##test_views.py
def test_call_view_loads(self):
product = Product.objects.get(id=1)
response = self.client.get(f'/shop/{product.id}/{product.slug}/')
self.assertEqual(response.status_code, 200)
self.assertTemplateUsed(response, 'shop/product/Product_detail.html')