django 2.0.7 NoReverseMatch位于/ posts

时间:2018-07-26 17:03:21

标签: python django amazon-ec2 ubuntu-16.04

未找到“ post_detail”的反面。 “ post_detail”不是有效的视图函数或模式名称。

在Django转到2.0.7之后,我设置了一些url规则。它在我的计算机上本地工作于127.0.0.1,但在计算机上却无法远程工作(ubuntu 1604)。

代码: post_list.html:

DT[, y := v]

blog.urls:

{% for post in posts %}
<div>
    <p>published: {{ post.published_date }}</p>
    <h1><a href="{% url 'post_detail' pk=post.pk %}">{{ post.title }}</a></h1>
    <p>{{ post.text|linebreaksbr }}</p>
</div>
{% endfor %}

blog.views:

urlpatterns = [
    path('', views.home_page, name='home_page'),
    path('posts', views.post_list, name='post_list'),
    path('post/<pk>/', views.post_detail, name='post_detail'),
]

mysite.urls:

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

已解决。我需要在blog.url中将'blog'添加为我的app_name,并在mysite.url中将'blog'添加为我的命名空间

谢谢家伙!

在2.0.7中,我需要在blog.url中添加一个app_name(博客),并在mysite.url(博客)中添加一个命名空间。仅在mysite.url中添加名称空间而不在blog.url-> django中添加app_name会告诉我添加应用程序名称。仅在blog.url中添加app_name而不在mysite.url-> django中添加名称空间会告诉我Blog是未注册的名称空间。还记得要刷新古尼康。

1 个答案:

答案 0 :(得分:0)

假设您的应用名称为博客,那么请在博客的urls.py中添加

app_name= 'blog'

并在模板中使用{% url 'blog:post_detail' pk=post.pk %}