[Answered ]-How do I change the view a URL resolves to after a certain date?

2👍

You don’t have to try to hack your urls.py to pull this off. Set one URL pattern that points to a view that looks like this:

def contest_page(request, contest_id):
    try:
        contest = Contest.objects.get(pk=contest_id)
    except Contest.DoesNotExist:
        raise Http404  # minimum necessary - you can do better
    if datetime.datetime.now() < contest.end_date:  # model field rather than module constants
        return contest(request, contest_id)  # CookieWizardView
    else:
        return contestclosed(request, contest_id)  # TemplateView

This is basically your contest_switcher with improvements:

  • Applies to multiple contests
  • Contests know their own end date so you don’t clutter your module scope with constants
  • Simple urls.py and the view does the work of delegating what is shown (you know, the view)

(Note that this example implies that you would change your models correspondingly and import all the correct libraries and such.)

Leave a comment