Django のdated_based 汎用ビューを使用しているときに、詳細ビューの URL に日付を入れたくありません。私は次のことを試しましたが、次のようになりますTypeError at /logbook/2013/january/testing/ object_detail() takes at least 6 arguments (7 given)
:
models.py
class Entry(models.Model):
pub_date = models.DateTimeField()
def get_absolute_url(self):
return "/logbook/%s/%s/" % (self.pub_date.strftime("%Y/%B").lower(), self.slug)
urls.py:
from __future__ import absolute_import
from django.conf.urls import patterns, include, url
from .models import Entry
from . import views
urlpatterns += patterns('',
url(r'^logbook/(?P<year>\d{4})/(?P<month>[A-Za-z]+)/(?P<slug>[\w-]+)/$',
views.entry_detail),
)
ビュー.py:
import functools
from django.views.generic import date_based
from .models import Entry
def prepare_arguments(view):
@functools.wraps(view)
def wrapped(request, *args, **kwargs):
kwargs['allow_future'] = request.user.is_staff
kwargs['queryset'] = Entry.objects.all() if request.user.is_staff
else Entry.objects.published()
kwargs['date_field'] = 'pub_date'
return view(request, *args, **kwargs)
return wrapped
@prepare_arguments
def entry_detail(request, *args, **kwargs):
return date_based.object_detail(request, *args, **kwargs)
上記のコードを変更して、URL に日を含めずに date_based 汎用ビューを引き続き使用することは可能ですか? そうでない場合は、URL パターンの簡単なカスタム ビューの例を教えてくださいurl(r'^logbook/(?P<year>\d{4})/(?P<month>[A-Za-z]+)/(?P<slug>[\w-]+)/$', views.entry_detail)
。