django 2.0.7 NoReverseMatch 在 /posts
django 2.0.7 NoReverseMatch at /posts
未找到 'post_detail' 的反向。 'post_detail' 不是有效的视图函数或模式名称。
Django 到 2.0.7 后,我设置了一些 url 规则。它在我的计算机上本地工作在 127.0.0.1,但在机器上不远程 (ubuntu 1604)。
代码:
post_list.html:
{% 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.urls:
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'),
]
blog.views:
def post_detail(request, pk):
post = get_object_or_404(Post, pk=pk)
return render(request, 'blog/post_detail.html', {'post': post})
mysite.urls:
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('blog.urls')),
]
已解决。我需要在 blog.url 中添加 'blog' 作为我的 app_name 并在 mysite.url
中添加 'blog' 作为我的命名空间
谢谢你!
在2.0.7中,我需要在blog.url中添加一个app_name(博客),在mysite.url(博客)中添加一个命名空间。仅在 mysite.url 中添加命名空间而不在 blog.url 中添加 app_name -> django 将告诉我添加应用程序名称。仅在 blog.url 中添加 app_name 而未在 mysite.url 中添加名称空间 -> django 会告诉我 blog 是未注册的名称空间。另外记得刷新gunicorn
假设您的应用程序名称是 blog 那么在您博客的 urls.py 添加
app_name= 'blog'
并在模板中使用 {% url 'blog:post_detail' pk=post.pk %}
未找到 'post_detail' 的反向。 'post_detail' 不是有效的视图函数或模式名称。
Django 到 2.0.7 后,我设置了一些 url 规则。它在我的计算机上本地工作在 127.0.0.1,但在机器上不远程 (ubuntu 1604)。
代码: post_list.html:
{% 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.urls:
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'),
]
blog.views:
def post_detail(request, pk):
post = get_object_or_404(Post, pk=pk)
return render(request, 'blog/post_detail.html', {'post': post})
mysite.urls:
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('blog.urls')),
]
已解决。我需要在 blog.url 中添加 'blog' 作为我的 app_name 并在 mysite.url
中添加 'blog' 作为我的命名空间谢谢你!
在2.0.7中,我需要在blog.url中添加一个app_name(博客),在mysite.url(博客)中添加一个命名空间。仅在 mysite.url 中添加命名空间而不在 blog.url 中添加 app_name -> django 将告诉我添加应用程序名称。仅在 blog.url 中添加 app_name 而未在 mysite.url 中添加名称空间 -> django 会告诉我 blog 是未注册的名称空间。另外记得刷新gunicorn
假设您的应用程序名称是 blog 那么在您博客的 urls.py 添加
app_name= 'blog'
并在模板中使用 {% url 'blog:post_detail' pk=post.pk %}