【问题标题】:Django 1.7 error NoReverseMatch at '/post/''/post/' 处的 Django 1.7 错误 NoReverseMatch
【发布时间】:2015-02-20 04:51:53
【问题描述】:

我是 django 的新手。 我遇到了低于错误消息异常值。

Reverse for 'category_detail' with arguments '()' and keyword arguments '{u'pk': ''}' not found. 1 pattern(s) tried: ['category/(?P<pk>[0-9]+)/$']

模板渲染时出错

Reverse for 'category_detail' with arguments '()' and keyword arguments '{u'pk': ''}' not found. 1 pattern(s) tried: ['category/(?P<pk>[0-9]+)/$']

排队:

 <li><a href="{% url 'category_detail' pk=category.pk %}/">{{ cat.title }}</a></li>

djangogirls/apsi/urls.py

urlpatterns = patterns('',
    url(r'^admin/', include(admin.site.urls)),
    url(r'', include('blog.urls')),
)

djangogirls/blog/urls.py

from django.conf.urls import patterns, include, url

从 .导入视图

urlpatterns = patterns('',
        url(r'^post/$', views.post_list),
        url(r'^category/(?P<pk>[0-9]+)/$', views.category_detail, name='category_detail'),
        url(r'^post/(?P<pk>[0-9]+)/$', views.post_detail),
        url(r'^post/new/$', views.post_new, name='post_new'),
        url(r'^post/(?P<pk>[0-9]+)/edit/$', views.post_edit, name='post_edit'),

)

djangogirls/blog/views.py

def category_detail(request, pk):
category = Post.objects.filter(category__id=pk)
return render(request, 'blog/category_detail.html', {'category': category})


def post_list(request):
    posts       = Post.objects.filter(published_date__isnull=False).order_by('published_date')
    categories  = Category.objects.all()
    tags        = Tag.objects.all()
    return render(request, 'blog/post_list.html', {'posts': posts, 'categories': categories, 'tags':tags })

djangogirls/blog/models.py

class Category(models.Model):

    title           = models.CharField(max_length=50)
    slug            = models.CharField(max_length=200)
    description     = models.TextField()
    created_date    = models.DateTimeField(auto_now_add=True)
    published_date  = models.DateTimeField(blank=True, null=True)

    def publish(self):
        self.published_date = timezone.now()
        self.save()

    def __str__(self):
        return self.title

class Post(models.Model):

    author          = models.ForeignKey('auth.User')
    category        = models.ForeignKey('Category')
    title           = models.CharField(max_length=200)
    text            = models.TextField()
    created_date    = models.DateTimeField(auto_now_add=True)
    published_date  = models.DateTimeField(blank=True, null=True)
    likes           = models.IntegerField(default=0)
    thumbnail       = models.FileField(upload_to = get_upload_file_name)

    def publish(self):
        self.published_date = timezone.now()
        self.save()

    def __str__(self):
        return self.title

你能帮我解决这个问题吗?

【问题讨论】:

    标签: python django


    【解决方案1】:

    看看你的变量名,你使用cat 来获取标题,category 来获取pk。也许category 未定义?这将导致在 url 标签中插入一个空字符串,并导致收到错误消息。

    【讨论】:

      【解决方案2】:

      urls.py中的参数名称是pk

      url(r'^category/(?P<pk>[0-9]+)/$', views.category_detail, name='category'),
      

      但是您正在尝试查找带有参数category_id 的网址。将其更改为:

      {% url 'blog.views.category_detail' pk=category.pk %}
      

      甚至可以省略参数名称:

      {% url 'blog.views.category_detail' category.pk %}
      

      而且恕我直言,只要您的网址有 name,最好通过其名称而不是视图名称来查找此网址:

      {% url 'category' category.pk %}
      

      更新:在post_list.html 中使用此代码:

      <a href="{% url 'category_detail' pk=category.pk %}/">{{ cat.title }}</a>
      

      据我了解,类别变量名为cat。您应该将正确的变量传递给{% url %} 标签:

      <a href="{% url 'category_detail' pk=cat.pk %}">{{ cat.title }}</a>
      

      要一劳永逸地解决此类问题,请考虑在您的Category 模型中实现get_absolute_url() 方法。在需要指向类别的任何时候使用此方法:

      <a href="{{ cat.get_absolute_url }}">{{ cat.title }}</a>
      

      【讨论】:

      • 感谢它的工作,当我尝试 url "/category/" 但显示另一个错误 "NoReverseMatch at /post/ Reverse for 'category' with arguments '('',)' and keyword arguments '{} ' 未找到。尝试了 1 种模式:['category/(?P[0-9]+)/$']"
      猜你喜欢
      • 1970-01-01
      • 2023-03-29
      • 1970-01-01
      • 2017-07-17
      • 2015-07-27
      • 2018-02-07
      • 2021-06-18
      • 1970-01-01
      • 2015-10-24
      相关资源
      最近更新 更多