Я пытаюсь включить django-schedule в свой проект.Источник Django-schedule здесь .Мне не нравятся URL, потому что они все захватывают слизняка.Мой проект допускает только один календарь на пользователя, поэтому нет смысла перехватывать слаг.Итак, я обернул представления django-schedule следующим образом (найдите слаг с использованием текущего пользователя и передайте его представлениям django-schedule):
from schedule.views import calendar_by_periods
from schedule.models import Calendar
from schedule.periods import Month
def cal_by_periods_wrapper(view):
def new_view(request, *args, **kwargs):
kwargs['calendar_slug'] = Calendar.objects.get_calendars_for_object(obj=request.user, distinction="owner")[0].slug
return view(request, *args, **kwargs)
return new_view
А вот соответствующий раздел из urls.py:
urlpatterns = patterns('',
url(r'^$',
cal_by_periods_wrapper(calendar_by_periods),
name = "month_calendar",
kwargs={'periods': [Month], 'template_name': 'schedule/calendar_month.html'}),
Работает нормально, пока не попадет в один из тегов шаблонов, включенных в django-schedule, prev_url:
@register.simple_tag
def prev_url(target, slug, period):
return '%s%s' % (
reverse(target, kwargs=dict(calendar_slug=slug)),
querystring_for_date(period.prev().start))
Эта функция вызывает:
TemplateSyntaxError at /teacher/calendar/
Caught an exception while rendering: Reverse for 'month_calendar' with arguments
'()' and keyword arguments '{'calendar_slug': u'asdf'}' not found.
Как я могу обернуть это представление и все еще заставить обратный вызов работать?