【问题标题】:'NoReverseMatch at' django mistake [duplicate]'NoReverseMatch at' django 错误 [重复]
【发布时间】:2018-04-21 05:51:50
【问题描述】:

当我将 url 添加到另一个应用程序时出现错误。 我加了

<a class="navbar-brand" href="{% url 'posts:listofposts' %}">Home</a> 

我的 root.url:

urlpatterns = [
    url(r'^', include('posts.urls', namespace= 'posts'))
]

posts.urls:

urlpatterns = [

    url(r'^create/', 
        create_post ,
        name='create_post'),

    url(r'^(?P<slug>[-\w]+)/edit/$',
        update_post,
        name = 'update_post'),

    url(r'^category/(?P<slug>[-\w]+)/$',
        category,
        name='category'),

    url(r'^(?P<slug>[-\w]+)/$',
        detail,
        name = 'detail'),

    url(r'^$',
        listofposts ,
        name='listofposts'),
]

和我在 post.views 中的观点:

def listofposts(request, category_slug = None):
    html = 'base.html'
    Category_all = Category.objects.all()
    query_set_list = Post.objects.all()
    query = request.GET.get("q")
    if query:
        query_set_list = query_set_list.filter(title__icontains=query)
    if category_slug:
        category = get_object_or_404(Category, slug=category_slug)
        products = Post.filter(category=category)
    context = {
        "title" : 'Записки',
        "list" : query_set_list,
        'category_all' : Category_all,
    }
    return render(request, html, context)



def detail(request, slug):
    Category_all = Category.objects.all()
    html = 'post_detail.html'
    query_set = Post.objects.all()
    instance = get_object_or_404(Post, slug = slug)
    context = {
        "title" : instance.title,
        "instance" : instance,
        "list": query_set,
        'category_all' : Category_all,
    }
    return render(request, html, context)

我又犯了下一个错误

Exception Value:    
Reverse for 'detail' not found. 'detail' is not a valid view function or pattern name.
<a href="{{ x.get_absolute_url }}"><p>{{ x.title }}</p></a>

在我将 url 链接添加到另一个应用程序之前,一切正常。如果我删除指向另一个视图的 url 链接,一切都会好起来的。非常感谢您的帮助。

【问题讨论】:

  • 您没有显示导致错误的get_absolute_url 方法。
  • def get_absolute_url(self): return reverse('detail', args=[str(self.slug)] )

标签: django


【解决方案1】:

当您在 Post 模型的 get_absolute_url 方法中反转 URL 时,您需要包含命名空间:

reverse('posts:detail', args=[str(self.slug)])

【讨论】:

  • 是的!!!!非常感谢!!!
猜你喜欢
  • 2020-11-22
  • 1970-01-01
  • 2020-06-01
  • 2017-08-19
  • 2020-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-29
相关资源
最近更新 更多