AttributeError: модуль blog.views не имеет атрибута post_detail

Файл urls.py

from django.conf.urls import url
from . import views

urlpatterns = [
    url(r'^$', views.post_list, name='post_list'),
    url(r'^post/(?P<pk>\d+)/$', views.post_detail, name='post_detail'),
]

Файл views.py

from django.utils import timezone
from django.shortcuts import render, get_object_or_404
from .models import Post
from . import urls

def post_list(request):
    posts = Post.objects.filter(
        published_date__lte=timezone.now()).order_by('published_date')
    return render(request, 'blog/post_list.html', {'posts': posts})

def post_detail(request, pk):
    post = get_object_or_404(Post, pk=pk)
    return render(request, 'blog/post_detail.html', {'post': post})

Несмотря на то, что атрибут post_detail был включен, я все равно получаю сообщение об ошибке, что он не включен. Может кто-нибудь помочь?
Редактировать: Как люди предположили, попытался удалить из. импортировать строку URL-адресов, но по-прежнему возникает та же ошибка. Также прикрепляю мой html-файл, если это помогает:

{% extends 'blog/base.html' %}
{% block content %}
                    {% for post in posts %}
                        <div class = "post">
                            <div class = "date">
                                <p>published: {{ post.published_date }}</p>
                            </div>
                            <h1><a href = "{% url 'post_detail' pk=post.pk %}">{{ post.title }}</a></h1>
                            <p>{{ post.text|linebreaksbr }}</p>
                        </div>
                    {% endfor %}
{% endblock %}

Какая у вас структура проекта? У вас есть циклический импорт: вы импортируете urls в views и views в urls.

Cyrlop 15.07.2018 19:28

Да, это утверждение from . import urls выглядит неверным или, по крайней мере, неуместным. Ваш код работает без него?

Ralf 15.07.2018 22:14

Пытался удалить, но все равно не работает.

user8315566 16.07.2018 18:14
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
3
2 020
1

Ответы 1

У вас есть циклический импорт.

Ваш модуль views импортирует ваш модуль urls, и наоборот.

Это означает, что ни один из файлов не может быть завершен.

Вам следует удалить эту строку с вашего views.py:

from . import urls

Поскольку вы его не используете, это не окажет отрицательного воздействия.

Другие вопросы по теме