我是python和django的初学者。
以下是一个问题:
我正在尝试使用django创建简单的博客应用程序,我已经创建了所有需要的内容,并且我能够呈现我的主页之一,但是当我试图访问posts页面时(为了能够查看当前的帖子),我会收到以下错误:
Request Method: GET
Request URL:    http://localhost:8000/posts/
Django Version: 2.0.2
Exception Type: NoReverseMatch
Exception Value:    
Reverse for 'post' not found. 'post' is not a valid view function or pattern name.我不知道为什么会收到这个错误,因为我已经编写并访问了posts视图函数,下面是我的文件:
my_blog/urls.py
"""Defines URL patterns for my_blog."""
from django.conf.urls import  url
from . import views
#needed app name
app_name='my_blog'
urlpatterns=[
    #Homepage
    url(r'^$',views.home,name='home'),
    # Show all posts.
    url(r'^posts/$', views.posts, name='posts'),models.py
from django.db import models
# Create your models here.
class BlogPost(models.Model):
    """Post that can be viewed"""
    title=models.CharField(max_length=200)
    text=models.TextField()
    date_added=models.DateTimeField(auto_now_add=True)
    def __str__(self):
        """Return a string representation of the model."""
        if len(self.text)<50:
            return self.text
        else:
            return self.text[:50] + "..."views.py
from django.shortcuts import render
from .models import BlogPost
from django.http import HttpResponseRedirect
# Create your views here.
def home(request):
    """The home page for Learning Log"""
    return render(request,'my_blog/home.html')
def posts (request):
    """Show all posts."""
    posts=BlogPost.objects.order_by('date_added')
    context={'posts':posts}
    return  render(request, 'my_blog/posts.html', context)HTML页面:
home.html
{%extends "my_blog/base.html"%}
{%block content%}
<html>
<p align="center">Welcome to my Blog</p>
</body>
</html>
{%endblock content%}base.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>My Blog</title>
</head>
<body bgcolor="#85C1E9">
<p>
    <a href="{%url 'my_blog:home'%}">Home</a> -
    <a href="{%url 'my_blog:posts'%}">Posts</a>
</p>
{%block content%}{%endblock content%}
</body>
</html>posts.html
{%extends "my_blog/base.html"%}
{%block content%}
<p>Posts</p>
<ul>
    {%for post in posts%}
    <li><a href="{%url 'my_blog:post' post.id%}">{{post}}</a> </li>
    {%empty%}
        <li>No posts have been added yet.</li>
    {%endfor%}
</ul>
{%endblock content%}预先感谢您的帮助
发布于 2018-03-07 22:01:25
在模板中有:
{% url 'my_blog:post' post.id %}这会产生一个错误,因为您还没有在my_blog/urls.py中用name="post"定义一个URL模式。
发布于 2018-03-07 22:20:19
在模板中查找的视图名称与urls.py中定义的名称不匹配。你需要让
urls.py
    url(r'^posts/$', views.posts, name='posts'),和posts.html
<li><a href="{%url 'my_blog:post' post.id%}">{{post}}</a> </li>通过在s中添加posts,html或在urls.py中删除s进行匹配
编辑
再往下看..。您需要在post中定义详细视图(带有参数的views.py )。并在urls.py中添加相应的条目,然后撤消我先前建议的更改。
您还应该考虑将视图从posts和post重命名为post_list和post_detail
https://stackoverflow.com/questions/49161895
复制相似问题