Question

Je suis en train d'intégrer le calendrier de django-dans mon projet. source de Django-horaire est . Je n'aime pas les urls, car ils ont tous capturer une limace. Mon projet ne permettra un calendrier par utilisateur, donc il n'a pas de sens pour capturer la limace. Donc, j'Enveloppez la vue django-calendrier comme celui-ci (voir la limace en utilisant l'utilisateur en cours, et le transmettre à django-horaire des vues de):

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

Et voici la section pertinente de 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'}),

Cela fonctionne bien jusqu'à ce qu'il frappe une des balises de modèle inclus avec django-horaire, 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))

Cette fonction soulève:

TemplateSyntaxError at /teacher/calendar/

Caught an exception while rendering: Reverse for 'month_calendar' with arguments 
'()' and keyword arguments '{'calendar_slug': u'asdf'}' not found.

Comment puis-je envelopper ce point de vue et de faire encore le travail d'appel inverse?

Était-ce utile?

La solution

Cela n'a rien à voir avec la fonction d'emballage. Il est juste que vous n'avez plus une URL avec le nom « month_calendar » qui prend un argument « calendar_slug ». Soit définir un dans votre URLconf, ou modifier le templatetag.

Modifier après commentaire Oui, mais l'appel « marche arrière » est toujours d'un argument slug, et il n'y a pas URL « month_calendar » qui prend un, de sorte que la correspondance inversée échoue.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top