0
imを使用している前月を取得し、URLを使用して前月の年月日を送信しました。私はそれをクリックしたときにdjango - 空のテンプレートの代わりにeventmonthview 404とMonthArchiveViewを使用して
は、しかし、私は次のように404を取得する:
Page not found (404)
Request Method: GET
Request URL: http://it.service.com/maintenance/previous/2016/04/
Raised by: maintenance.views.EventMonthArchiveView
No Planned IT Maintenance available
私はそれは、代わりにこの空のページが表示されない理由を知りませんか?私はこの代わりに空のテンプレートを取得していないはずですか?
また、ユーザーが以前のリンクを再度クリックした場合、URLから現在の月/年を取り除いてから1か月を取り除く方法を知りたい(前の月を前にクリックするたびに
views.py
from django.views.generic.list import ListView
from django.shortcuts import get_object_or_404, render, render_to_response
from django.http import HttpResponse
from datetime import date, datetime, timedelta, time
from django.views.generic.dates import MonthArchiveView
from .models import Maintenance
from .models import MaintenanceType
from .models import ServiceType
# Create your views here.
def index(request):
today = date.today()
ObjMaintenance = Maintenance.objects.filter(StartTime__gt=today)
return render(request, 'maintenance/index.html', {
'Maintenance': ObjMaintenance,
})
def thirtydays(request):
today = date.today()
previous_month = (today.replace(day=1) - timedelta(1)).replace(day=1)
ObjMaintenance = Maintenance.objects.filter(StartTime__gt=today-timedelta(days=30))
return render(request, 'maintenance/previous.html', {
'Maintenance': ObjMaintenance,
'previous_month': previous_month,
'Title': 'Maintence in the Last 30 Days',
})
def previous(request, year, month):
previousMnths = datetime
ObjMaintenance = Maintenance.objects.filter(StartTime__gt=today-timedelta(days=30))
strPrevious = 'Maintence for the month %s' % (previous_month)
return render(request, 'maintenance/previous.html', {
'Maintenance': ObjMaintenance,
'previous_month': previous_month,
'Title': strPrevious,
})
def upcoming(request):
today = date.today()
ObjMaintenance = Maintenance.objects.filter(StartTime__gt=today+timedelta(days=30))
return render(request, 'maintenance/index.html', {'Maintenance': ObjMaintenance,})
class EventMonthArchiveView(MonthArchiveView):
template_name = "maintenance/previous.html"
queryset = Maintenance.objects.all()
date_field = "StartTime"
allow_future = False
urls.py
app_name = 'maintenance'
urlpatterns = [
url(r'^$', views.index, name='index'),
url(r'^thirtydays/$', views.thirtydays, name="thirtydays"),
url(r'^previous/(?P<year>[0-9]{4})/(?P<month>[0-9]+)/$',
EventMonthArchiveView.as_view(month_format='%m'),
name="previous"),
url(r'^upcoming$', views.upcoming, name='upcoming'),
]
テンプレートURL
<a href="{% url 'maintenance:previous' previous_month|date:'Y' previous_month|date:'m' %}"><< Previous Maintenance</a>
私は月アーカイブビューは既にあなたが望むように動作すると思います。 2016年5月のページでは、 'previous_month'は' 2016-04-01'、2016年4月のページでは 'previous_month'は' 2016-03-01'になります。 – Alasdair