Я создал BlogPost
класс. Затем были созданы ListView BlogPostListView
и blogpost_detail
.
ADDED diff для всех изменений, которые повлияли на ошибку - https://pastebin.com/DyukCYq9
Когда я нажал, чтобы опубликовать имя (на этой странице https://edamer.ru/blog_posts/)
Меня перенаправили на действующий URL. Но вместо страницы product_detail я получил ошибку:
Страница не найдена. http://127.0.0.1: 8001 / blog_post / 1 /
Создано: blog.views.product_detail. Ни один продукт не соответствует заданному запросу.
Я не могу понять, почему product_detail()
вызывается вместо blogpost_detail()
Также в тексте ошибки указано Product ( Product - это название другой модели в моем приложении. Но я звонил BlogPost
(не Продукт)
Я пробовал
- python управлять. py flu sh # очистить базу данных
- Просмотрите мои изменения. Но не нашел вызовов
product_detail()
Я думаю, что ошибка связана с недопустимыми URL
Мой код
views.py
def product_detail(request, **kwargs):
product = get_object_or_404(Product, pk=kwargs["pk"])
shops = Shop.objects.all()
return render(request, 'blog/product_detail.html', {'product': product, 'shops': shops})
class BlogPostListView(ListView):
model = BlogPost
template_name = 'blog/post_list.html'
page_kwarg = 'blog_post'
context_object_name = 'blog_posts'
def blogpost_detail(request, **kwargs):
post = get_object_or_404(BlogPost, pk=kwargs["pk"])
return render(request, 'blog/post_detail.html', {'post': post})
urls.py
urlpatterns = [
path('', HomePageView.as_view(), name='main_list'),
path('search/', SearchResultsView.as_view(), name='search_results'),
path('search_shop/<slug:slug>/', ProductListView.as_view(), name='search_shop'),
path('search_shop_results/<slug:slug>/', ProductSearchResultsView.as_view(), name='search_shop_results'),
path('<slug:slug>/<int:pk>/', views.product_detail, name='product_detail'),
path('shops/', ShopListView.as_view(), name='shop_list'),
path('contacts/', views.contacts, name='contacts'),
path("robots.txt", TemplateView.as_view(template_name="blog/robots.txt", content_type="text/plain")),
url(r'^sitemap\.xml$', sitemap, {'sitemaps': sitemaps}, name='django.contrib.sitemaps.views.sitemap'),
url(r'^favicon\.ico$', RedirectView.as_view(url='/static/favicon.ico'), name='favicon'),
path('register/', views.RegisterFormView.as_view(), name="register"),
path('login/', views.LoginFormView.as_view(), name="login"),
path('logout/', views.LogoutView.as_view(), name="logout"),
path('blog_posts/', views.BlogPostListView.as_view(), name='post_list'),
path('blog_post/<int:pk>/', blogpost_detail, name='blogpost_detail'),
]
post_list. html
{% for post in blog_posts %}
<a href="{% url 'blogpost_detail' post.pk %}" style="text-decoration: none;color:inherit;">
{{post.title}}
</a>
<p>{{post.prev_text}}</p>
<br>
{% endfor %}
post_detail. html
<h1>Post detail</h1>
<div class="container" style="margin-top: 40px; font-size: 1.2rem; padding-left: 0px;">
<h1>{{post}}</h1>
</div>