簡體   English   中英

Django 1.7錯誤NoReverseMatch在'/ post /'

[英]Django 1.7 error NoReverseMatch at '/post/'

我是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 /博客/ 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 /博客/ 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 /博客/ 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

你能幫我解決這個問題嗎?

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 %}

並且imho,就你的網址有name ,最好通過它的名字而不是視圖的名稱來找到這個網址:

{% url 'category' category.pk %}

更新 :在post_list.html您使用以下代碼:

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

據我所知,類別變量名為cat Yous應該將正確的變量傳遞給{% 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>

看看你的變量名,你用cat獲取標題和category來獲取pk。 也許category未定義? 這將導致在url標記中插入空字符串,並導致收到的錯誤消息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM