Ошибка при тестировании динамического url в django
url тест проходит с обратной функцией, но не проходит с необработанным url
Это тест
from django.test import TestCase
from django.urls import reverse
from django.contrib.auth import get_user_model
from .models import Post
# Create your tests here.
class BlogTests(TestCase):
def setUp(self):
self.user = get_user_model().objects.create_user(
username="testuser",
email="test@email.com",
password="secret"
)
self.post = Post.objects.create(
title="A good title",
author=self.user,
body="Nice body content"
)
def test_post_detail_view(self):
#response = self.client.get(reverse("post_detail", args=[self.post.pk]))
#no_response = self.client.get(reverse("post_detail", args=[10000]))
response = self.client.get(f"/post/{self.post.pk}/")
no_response = self.client.get("/post/1000/")
self.assertEqual(response.status_code, 200)
self.assertEqual(no_response.status_code, 404)
self.assertContains(response, "A good title")
self.assertTemplateUsed("post_detail.html")
Это вид
from django.views.generic import ListView, DetailView
from .models import Post
# Create your views here.
class BlogListView(ListView):
model = Post
template_name = "home.html"
class BlogDetailView(DetailView):
model = Post
template_name = "post_detail.html"
это конфигурация url
from django.urls import path
from .views import BlogListView, BlogDetailView
urlpatterns = [
path("", BlogListView.as_view(), name="home"),
path("posts/<int:pk>", BlogDetailView.as_view(), name="post_detail"),
]
Закомментированные строки работают в тесте, но незакомментированные возвращают 404
#response = self.client.get(reverse("post_detail", args=[self.post.pk]))
#no_response = self.client.get(reverse("post_detail", args=[10000]))
response = self.client.get(f"/post/{self.post.pk}/")
no_response = self.client.get("/post/1000/")
Пожалуйста, объясните
Я попробовал обратные урлы, которые работают, но все еще не понимаю, почему сырые урлы не работают.