百日草重写网址确实不起作用

时间:2016-08-26 22:18:25

标签: django url zinnia zinnia-entry

我正在尝试自定义百日草中的条目网址,以显示条目的slu ,,即... / blog / slug。 我一直在密切关注文档here - 我已经覆盖了get_absolute_url方法,我添加了视图并配置了url并在django设置中注册了_base模型 - 但错误仍然存​​在:

zinnia_customized models.py:

from django.db import models
from zinnia.models_bases.entry import AbstractEntry


class EntryWithNewUrl(AbstractEntry):
    """Entry with '/blog/<id>/' URL"""

    @models.permalink
    def get_absolute_url(self):
        return ('zinnia:entry_detail', (),
                {'slug': self.slug})

    class Meta(AbstractEntry.Meta):
        abstract = True

zinnia_customized views.py:

from django.views.generic.detail import DetailView
from zinnia.models.entry import Entry
from zinnia.views.mixins.entry_preview import EntryPreviewMixin
from zinnia.views.mixins.entry_protection import EntryProtectionMixin

class EntryDetail(EntryPreviewMixin, EntryProtectionMixin, DetailView):
    queryset = Entry.published.on_site()
    template_name_field = 'template'

project urls.py:

urlpatterns = [
url(r'^$', TemplateView.as_view(template_name='pages/home.html'), name='home'),
url(r'^about/$', TemplateView.as_view(template_name='pages/about.html'), name='about'),


url(r'^admin/tools/', include('admin_tools.urls')),
url(settings.ADMIN_URL, include(admin.site.urls)),


url(r'^users/', include('anpene.users.urls', namespace='users')),
url(r'^accounts/', include('allauth.urls')),

url(r'^blog/', include('zinnia_customized.urls', namespace='zinnia')),
url(r'^comments/', include('django_comments.urls')),
]

zinnia_customized urls.py:

    blog_urls = [
    url(r'^', include('zinnia.urls.capabilities')),
    url(r'^search/', include('zinnia.urls.search')),
    url(r'^sitemap/', include('zinnia.urls.sitemap')),
    url(r'^trackback/', include('zinnia.urls.trackback')),
    url(r'^blog/tags/', include('zinnia.urls.tags')),
    url(r'^blog/feeds/', include('zinnia.urls.feeds')),
    url(r'^blog/authors/', include('zinnia.urls.authors')),
    url(r'^blog/categories/', include('zinnia.urls.categories')),
    # url(r'^blog/', include('zinnia.urls.entries')),
    url(r'^blog/', include('zinnia_customized.urls.entries')),
    url(r'^blog/', include('zinnia.urls.archives')),
    url(r'^blog/', include('zinnia.urls.shortlink')),
    url(r'^blog/', include('zinnia.urls.quick_entry')),
]
urlpatterns += patterns('',
                        url(r'^', include(blog_urls), name='blog')
                        )

zinnia_customized app urls / entries.py:

from django.conf.urls import url
from django.conf.urls import patterns
from zinnia_customized.views import EntryDetail

urlpatterns = [
    url(r'^(?P<slug>[\w-]+)/$', EntryDetail.as_view(), name='entry_detail'),
]

zinnia_customized admin.py:

from django.contrib import admin
from django.utils.translation import ugettext_lazy as _

from zinnia.models.entry import Entry
from zinnia.admin.entry import EntryAdmin

class EntryUrlAdmin(EntryAdmin):
    """blank""" 


admin.site.register(Entry, EntryUrlAdmin)

设置:

...  
ZINNIA_ENTRY_BASE_MODEL = 'zinnia_customized.models.EntryWithNewUrl'
...

错误:

NoReverseMatch at /blog/

Reverse for 'entry_detail' with arguments '()' and keyword arguments '{'slug': u'pies'}' not found. 1 pattern(s) tried: [u'blog/(?P<year>\\d{4})/(?P<month>\\d{2})/(?P<day>\\d{2})/(?P<slug>[-\\w]+)/$']

1 个答案:

答案 0 :(得分:0)

我的问题是我在zinnia_customized中创建了一个名为urls的文件夹,因此django不确定它是否应该使用该文件夹或urls.py