Страница не найдена (404) при добавлении страницы Django
Итак, я пытаюсь связать страницу в своем блоге. Я создал шаблон, вид и URL для страницы, но она продолжает выдавать ошибку 404. Не мог бы кто-нибудь просмотреть мой код и помочь мне разобраться в проблеме?
add_post.html:
{% extends "base.html" %}
{% block content %}
<header>
<div class="post-caption mt-4">
<div class="text-center-caption">
<h1 class="display-5 fw-bolder text-shadow">Add Your Post</h1>
<p class="lead text-shadow fw-bold">Tell us about your favourite game</p>
</div>
</div>
</header>
{%endblock%}
views.py:
from django.shortcuts import render, get_object_or_404, reverse
from django.views.generic import View, CreateView, ListView
from django.http import HttpResponseRedirect
from .models import Post
from .forms import CommentForm
class AddPost(CreateView):
model = Post
template_name = 'add_post.html'
fields = '__all__'
urls.py:
from .views import AddPost, PostList, PostDetail, PostLike
from django.urls import path
urlpatterns = [
path('', PostList.as_view(), name='home'),
path('<slug:slug>/', PostDetail.as_view(), name='post_detail'),
path('like/<slug:slug>/', PostLike.as_view(), name='post_like'),
path('add_post/', AddPost.as_view(), name='create_post'),
]
Порядок шаблона URL чувствителен. У вас есть "catchall" URL, определенный с помощью path('<slug:slug>/', PostDetail.as_view(), name='post_detail'),
.
Поэтому add_post
может быть правильным slug для поста, что и вызывает конфликт.
Просто измените порядок ваших шаблонов URL на следующий:
from .views import AddPost, PostList, PostDetail, PostLike
from django.urls import path
urlpatterns = [
path('', PostList.as_view(), name='home'),
path('like/<slug:slug>/', PostLike.as_view(), name='post_like'),
path('add_post/', AddPost.as_view(), name='create_post'),
path('<slug:slug>/', PostDetail.as_view(), name='post_detail'),
]