首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django get_absolute_url NoReverseMatch零模式尝试

Django get_absolute_url NoReverseMatch零模式尝试
EN

Stack Overflow用户
提问于 2014-11-25 11:49:52
回答 1查看 1K关注 0票数 1

我尝试使用get_absolute_url已经有好几天了,每当我单击管理页面中的view按钮或单击add页面上的submit,我就会得到以下错误:

代码语言:javascript
复制
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/ blog /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

我的代码(至少我认为是相关的)。如果需要更多的信息,请告诉我)

blogs.models.py

代码语言:javascript
复制
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

代码语言:javascript
复制
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

代码语言:javascript
复制
from django.conf.urls import patterns, url
from blogs import views

urlpatterns = patterns('',
    url(
        regex=r'^$',
        view=views.BlogListView.as_view(),
        name='blog_list'
    ),

    url(
        regex=r'^(?P<pk>\d+)/$',
        view=views.BlogDetailView.as_view(),
        name='blog_detail'
    ),

    url(
        regex=r'^add/$',
        view=views.BlogCreate.as_view(),
        name='blog_add'
    ),

    url(
        regex=r'^(?P<pk>\d+)/$',
        view=views.BlogUpdate.as_view(),
        name='blog_update'
    ),

    url(
        regex=r'^(?P<pk>\d+)/delete/$',
        view=views.BlogDelete.as_view(),
        name='blog_delete'
    ),
)

blogs.views.py

代码语言:javascript
复制
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')
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-25 11:52:29

您需要使用名称空间blogs来访问url,如下所示:

代码语言:javascript
复制
return reverse('blogs:blog_detail', kwargs={'pk': self.pk})
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27125953

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档