如何使用添加的url参数重定向url

时间:2017-12-21 14:28:06

标签: django

我有一个锻炼日历应用程序,如果用户转到/workoutcal,我希望将它们重定向到workoutcal/<today's year>/<today's month>。这意味着我希望将它们重定向到这条路线,如果它们转到/workoutcal

url(r'^(?P<year>[0-9]+)/(?P<month>[1-9]|1[0-2])$', views.calendar, name='calendar'),

那么如何在urls.py中编写一个新的url模式,其中包含:

url(r'^$', RedirectView().as_view(url=reverse_lazy(),todays_year, todays_month)),

3 个答案:

答案 0 :(得分:2)

您可以继承get_redirect_url,覆盖class MonthRedirectView(RedirectView): def get_redirect_url(*args, **kwargs): today = timezone.now() return reverse(calendar, args=[today.year, today.month]) ,然后撤消其中的网址。

url(r'^$', MonthRedirectView().as_view()),

然后在URL模式中包含您的视图:

from django.contrib.auth import get_user_model

Class MyCustomModelAdmin...

CustomUser = get_user_model()

admin.site.register(CustomUser, MyCustomModelAdmin)

答案 1 :(得分:1)

我发现了我的问题的另一个解决方案,即制作一个只使用正确的参数调用日历的视图:

网址:

url(r'^$', views.redirect_to_calendar),

重定向视图:

def redirect_to_calendar(request):
    today = timezone.now()
    return calendar(request, year = today.year, month = today.month)

我们向用户提供的观点:

def calendar(request, year = None, month = None):

    ## A bunch of server logic 

    return HttpResponse(template.render(context, request))

答案 2 :(得分:0)

假设您的RedirectView位于您应用的urls.py中:

url(r'^(?P<year>[0-9]+)/(?P<month>[1-9]|1[0-2])$', views.calendar, name='calendar'),
url(r'^$', RedirectView().as_view(url='{}/{}'.format(todays_year, todays_month)),

编辑:这假定当用户转到todays_year时计算todays_month/workoutcal/,而他们不是Sub TestMe() Dim a As Date a = "what" a = "" End Sub ""在网址加载时加载的)。请参阅Alasdair的回答。