Django错误:模板渲染期间出错

时间:2017-02-15 09:19:25

标签: python-3.x django-models django-templates django-views

我正在学习Django框架,我在扩展模板部分,我正在尝试添加一个新模板,当我点击我博客中帖子的标题重定向到包含帖子详细信息的页面时(日期) / author / etc),所以我在 views.py 中创建了一个新视图,在 urls.py 中创建了一个新网址,但是当我调整网址的路径时.html文件的'href'是可取的,正如您将看到的,我在重新加载页面时收到以下错误:

  

的NoReverseMatch      

使用参数'()'和关键字反转'blog.views.post_detail'   参数'{​​'pk':2}'未找到。尝试了0种模式:[]

  

模板渲染期间出错

     

在模板中   /home/douglas/Documentos/Django/my-first-blog/blog/templates/blog/post_list.html,   第9行的错误

所以,当我擦除 href 以恢复默认值时,一切正常...我几乎可以肯定 href 行中出了问题,但我会发布所有模板相关文件供您检查,如果您需要检查其他任何内容,请告诉我:

第一个html文件: post_list.html

{% extends 'blog/base.html' %}

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

urls.py:

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

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

views.py

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

def post_list(request):
    #posts = Post.objects.filter(published_date__lte=timezone.now()).order_by('published_date')
    posts = Post.objects.all()
    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})

好伙计们,我想是的,我希望我没有忘记关于我的问题的任何细节...... 提前谢谢,欢迎任何帮助!!

1 个答案:

答案 0 :(得分:1)

您需要为网址定义名称。它更好。

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

在此模板中,您可以在url代码

上使用此名称
<h1><a href="{% url 'post_detail' pk=post.pk %}">{{ post.title }}</a></h1>

第一个信息(名称为url定义)

  

第一个参数是url()名称。它可以是引用的文字或任何   其他上下文变量。

第二个信息(在您的情况下,没有名字的网址)

  

如果您要检索命名空间的URL,请完全指定   合格名称:

     

{%url&#39; myapp:view-name&#39; %}

More information here