每当我尝试打开我的localhost时就会收到此错误:8000恰好是我正在处理的应用程序的主页。
NoReverseMatch at /
Reverse for 'category_detail' with arguments '()' and keyword arguments '{}' not found. 1 pattern(s) tried: ['category/(?P<slug>[\\-\\w]+)/$']
以下是模板中使用的{%url%},我的models.py,我的urls.py和views.py
发生了什么事?我做错了什么?
#in Template.
<a href="{% url 'category_detail' %}" class="button tiny">View</a>
#my urls.py
from django.conf.urls import patterns, url
from . import views
urlpatterns = patterns('',
url(r'^$', views.home.as_view(), name='home'),
url(r'^categories/$', views.MyCategory.as_view(), name='all_categories'),
url(r'^category/(?P<slug>[-\w]+)/$', views.CategoryDetail.as_view(), name='category_detail'),
url(r'^tip/(?P<slug>[-\w]+)/$', views.ToolkitDetail.as_view(), name='toolkit_detail'),
)
#my models.py
from django.db import models
from django.core.urlresolvers import reverse
class Category(models.Model):
slug = models.SlugField()
title = models.CharField(max_length=250)
heading = models.CharField(max_length=750)
description = models.TextField()
link = models.URLField()
def get_absolute_url(self):
return reverse('category_detail', kwargs={'slug': self.slug})
#my views.py
class MyCategory(ListView):
model = Category
context_object_name = 'category'
template_name = 'category.html'
class CategoryDetail(DetailView):
slug_field = 'slug'
model = Category
slug_url_kwarg = 'slug'
context_object_name = 'category'
template_name = 'category_detail.html'
以上是我的问题的总结。如有任何帮助表示赞赏。我确定它的问题很清楚,但是由于StackOverflow不让我发帖而不添加更多文字,我这样做了。我认为上面的摘录对我的问题是自我解释的。我想我现在已经发布了。
答案 0 :(得分:4)
您的网址名称&#39; category_detail&#39;有强制参数 - slug。所以在模板中你可以写:
<a href="{% url 'category_detail' category.slug %}" class="button tiny">View</a>
由于您的模型具有生成网址的特殊方法,因此您可以轻松完成:
{{ category.get_absolute_url }}
答案 1 :(得分:-1)
您的模板包含{% url 'category_detail' %}
,即尝试撤消“category_detail”网址格式,而不提供所需的slug
关键字参数。这可能有效:
{% url 'category_detail' slug="foo" %}