2014-11-25 80 views
1

我一直在努力,現在天使用get_absolute_url,每當我在管理頁面上的視圖中點擊網站上的按鈕,或者點擊提交我的外接窗體頁上,我得到這個錯誤:Django的get_absolute_url NoReverseMatch零模式試圖

NoReverseMatch at /admin/r/14/3/ (or NoReverseMatch at /blogs/add/) 

Reverse for 'blog_detail' with arguments '()' and keyword arguments '{'pk': 3}' not found. 0 pattern(s) tried: [] 

如果我去的mysite /博客/ 3我得到博客的詳細信息頁面就好了,因爲我有它設置。所以我知道該網頁的工作原理,但它似乎沒有試圖找到它,因爲它說零模式嘗試。

文檔我看主要有:(我認爲至少是相關的,如果需要更多的信息讓我知道請)

https://docs.djangoproject.com/en/1.7/topics/class-based-views/generic-editing/ https://docs.djangoproject.com/en/1.7/ref/models/instances/#get-absolute-url

我的代碼

博客。 models.py中

from django.contrib.auth.models import User 
from django.conf import settings 
from django.db import models 
from django.core.urlresolvers import reverse 
from audit_log.models.fields import CreatingUserField, CreatingSessionKeyField 

class Blog(models.Model): 
    created_by = CreatingUserField(related_name = "created_categories") 
    created_with_session_key = CreatingSessionKeyField() 
    created_time = models.DateTimeField(auto_now_add=True) 
    blog_title = models.CharField('Blog Title', max_length=200) 
    short_description = models.TextField('Short Description', max_length=140) 
    blog_image = models.CharField('Image', max_length=200) 
    youtube_link = models.URLField('YouTube', max_length=200) 
    external_site_link = models.URLField('Website', max_length=200) 
    full_blog = models.TextField(max_length=10000) 

    def get_absolute_url(self): 
     return reverse('blog_detail', kwargs={'pk': self.pk}) 

    def __unicode__(self): 
     return self.blog_name 

urls.py

from __future__ import unicode_literals 

from django.conf import settings 
from django.conf.urls import patterns, include, url 
from django.conf.urls.static import static 
from django.views.generic import TemplateView 

# Uncomment the next two lines to enable the admin: 
from django.contrib import admin 
admin.autodiscover() 

urlpatterns = patterns('', 
    url(r'^blogs/', include('blogs.urls', namespace='blogs')), 
) 

blogs.urls.py

blogs.views.py

from django.shortcuts import render 
from django.core.urlresolvers import reverse 

from django.views.generic import DetailView 
from django.views.generic import RedirectView 
from django.views.generic import UpdateView 
from django.views.generic import ListView 

from django.views.generic.edit import CreateView, UpdateView, DeleteView 
from django.core.urlresolvers import reverse_lazy 

# Only authenticated users can access views using this. 
from braces.views import LoginRequiredMixin 

from .models import Blog 

class BlogDetailView(DetailView): 
    model = Blog 

class BlogListView(ListView): 
    model = Blog 

class BlogCreate(LoginRequiredMixin, CreateView): 
    model = Blog 
    fields = ['blog title', 'short_description', 'blog_image', 
       'youtube_link', 'external_site_link', 'full_blog'] 

class BlogUpdate(LoginRequiredMixin, UpdateView): 
    model = Blog 
    fields = ['blog title', 'short_description', 'blog_image', 
       'youtube_link', 'external_site_link', 'full_blog'] 

class BlogDelete(LoginRequiredMixin, DeleteView): 
    model = Blog 
    success_url = reverse_lazy('blog_list') 

回答

3

您需要的命名空間blogs解決網址是這樣的:

return reverse('blogs:blog_detail', kwargs={'pk': self.pk}) 
+0

資本B爲實際上是一個錯字(現在更正了)。我主要是複製/粘貼,但我想編輯的東西,我不小心改變了,不知怎的,(要歸咎於睡眠不足)。無論如何,我想我的進步與你的幫助。我改爲'博客:blog_detail',我不再有這個錯誤。但是,現在我被帶到http://searchassist.verizon.com/blahblahblahblah。在頁面上,它說對不起,我們找不到http它可能不可用或可能不存在。我的網站目前只在本地,它似乎首先嚐試正確的本地網址。這麼奇怪。 – 2014-11-25 12:06:32

+0

好吧,我只是測試增加一個新的博客,它完美地工作。所以現在它只是從管理頁面的網站視圖不工作。它採用了我在上面描述的搜索引擎verizon的東西。 – 2014-11-25 12:14:07

+1

OK固定在現場按鈕管理員查看我的最後一點問題。我不得不改變我的網站域名字段。現在一切都運轉良好。非常感謝你doniyor。命名空間解決了它。 – 2014-11-25 12:27:23