Ошибка при тестировании динамического 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/")

Пожалуйста, объясните

Я попробовал обратные урлы, которые работают, но все еще не понимаю, почему сырые урлы не работают.

Вернуться на верх