我有一个锻炼日历应用程序,如果用户转到/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)),
答案 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的回答。