Как я могу передать id поста через клиента во время тестирования в Django?
def test_sharing_post_through_email(self):
form = {'name': 'Martin', 'email': 'exampel.example@gmail.com', 'to': 'Martinals@gmail.com'}
response = self.client.post('/<int:id>/share/', data={'post': self.post, 'form': form})
response.user = self.user
self.assertEqual(response.status_code, 200)
self.assertIsInstance(response.context, dict)
self.assertEqual(response.context['sent'], True)
как я могу передать ID в url?
Вы должны использовать reverse
из django.urls
. Предположим, что ваш url определен в urls.py
как:
path('/<int:id>/share/', views.share_view, name="share_view")
Вы можете передать id с обратным значением как:
from django.urls import reverse
def test_sharing(self):
url = reverse("share_view", kwargs={"id": 1234})
response = self.client.post(url, data={"post": "1"})
Вы должны использовать имя приложения в обратном вызове. Если ваш целевой вид находится в приложении "home":
url = reverse("home:share_view", kwargs={"id": 1234})