首页 > 解决方案 > 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'),
]

文件视图.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已包含属性,我仍然收到不包含该属性的错误。有人可以帮忙吗?
编辑:正如人们建议的那样,尝试从 . 导入 urls 行,但仍然出现相同的错误。如果有帮助,还附上我的 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 %}

标签: django

解决方案


您有一个循环导入。

您的views模块导入您的urls模块,反之亦然。

这意味着两个文件都无法完成导入。

你应该从你的删除这一行views.py

from . import urls

由于您不使用它,因此不会产生不利影响。


推荐阅读