Django의 dated_based generic views을 사용하는 동안 세부보기의 URL에 해당 날짜를 표시하고 싶지 않습니다. 나는 시도 다음하지만 얻을 TypeError at /logbook/2013/january/testing/ object_detail() takes at least 6 arguments (7 given)
:Django의 date_based 일반 뷰에서 day 키워드 인수를 생략 하시겠습니까?
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),
)
views.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)
에 대한 간단한 사용자 정의보기의 예를 들려 줄 수 있습니까?
당신이 일반적인 뷰를 사용자 정의하려는 경우, 당신은 수도 클래스 기반 뷰 (이 경우 ['DateDetailView']) (https://docs.djangoproject.com/en/dev/ref/class-based-views/generic-date-based/#datedetailview)로 이동하는 것이 더 쉽습니다. . – Alasdair
DateDetailView [일일 키워드 인수가 여전히 필요합니다] (https://code.djangoproject.com/ticket/17508). 나는 내 자신의 견해를 써야 할 것 같아. – sgriffee
나는'DateDetailView'가 상자를 움직이게 할 것을 제안하려고하지는 않았다. 단지 개별적인 방법을 오버라이드 할 수 있기 때문에 커스터마이징하기가 더 쉽다. 나는'get_object()'를 오버라이드 (override)하는 것으로 시작해, 어떻게되는지를 보았습니다. – Alasdair