Я не смог открыть 'about. html' при использовании return render в views.py - PullRequest
0 голосов
/ 09 марта 2020

Извините, что я новичок в Django, так как я создаю веб-сайт и пытаюсь использовать общий c способ, но когда я использую способ для обратного рендеринга, он не может открыть связанный файл html (о. html), кто-нибудь поможет? views.py:

from django.shortcuts import render
from django.views import generic
from .models import Post
# Create your views here.
class PostList(generic.ListView):
    queryset = Post.objects.filter(status=1).order_by('-created_on')[:4]
    template_name = 'index.html'

class PostDetail(generic.DetailView):
    model = Post
    template_name = 'post_detail.html'

def about(request):
    return render(request, 'about.html')

urls.py:

from django.urls import path
from . import views

urlpatterns = [
    path('', views.PostList.as_view(), name='index'),
    path('<slug:slug>/', views.PostDetail.as_view(), name='post_detail'),
    path('about/', views.about, name='about')
]

1 Ответ

1 голос
/ 09 марта 2020

Ваш urls.py настроен неправильно: path('<slug:slug>/',...) соответствует также URL "/ about /", поэтому он запустит представление post_detail с slug = "about".

Вам необходимо изменить порядок из ваших URL от большинства c до наименее c (так что "о" перед "post_detail"). Лучше измените свои URL, которые относятся к постам, чтобы они содержали слово «посты», это также более эффективная практика:

urlpatterns = [
    path('posts/', views.PostList.as_view(), name='index'),
    path('posts/<slug:slug>', views.PostDetail.as_view(), name='post_detail'),
    path('about/', views.about, name='about')
]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...