diff --git a/issues/urls.py b/issues/urls.py index 323d620..8402305 100644 --- a/issues/urls.py +++ b/issues/urls.py @@ -4,7 +4,7 @@ from . import views app_name = 'issues' urlpatterns = [ - path('', views.index, name='index'), + path('', views.IndexView.as_view(), name='index'), path('new', views.new, name='new'), - path('/', views.detail, name='detail'), + path('/', views.DetailView.as_view(), name='detail'), ] diff --git a/issues/views.py b/issues/views.py index 0c43bcc..20b5a19 100644 --- a/issues/views.py +++ b/issues/views.py @@ -1,24 +1,30 @@ from django.http import HttpResponseRedirect -from django.shortcuts import get_object_or_404, render +from django.shortcuts import render +from django.views import generic from .forms import IssueForm from .models import Issue -def index(request): - issue_list = Issue.objects.order_by('create_date') - return render(request, 'issues/index.html', { - 'issue_list': issue_list, - }) +class IndexView(generic.ListView): + template_name = 'issues/index.html' + context_object_name = 'issue_list' + + def get_queryset(self): + return Issue.objects.order_by('create_date') -def detail(request, issue_id): - issue = get_object_or_404(Issue, pk=issue_id) - return render(request, 'issues/detail.html', { - 'issue': issue, - }) +class DetailView(generic.DetailView): + model = Issue + template_name = 'issues/detail.html' + pk_url_kwarg = 'issue_id' +# class NewIssueForm(generic.FormView): +# template_name = 'issues/new.html' +# form_class = IssueForm +# success_url = + def new(request): if request.method == 'POST': form = IssueForm(request.POST) diff --git a/projects/urls.py b/projects/urls.py index 7be94af..3b0b3b9 100644 --- a/projects/urls.py +++ b/projects/urls.py @@ -4,6 +4,6 @@ from . import views app_name = 'projects' urlpatterns = [ - path('', views.index, name='index'), - path('/', views.view, name='view'), + path('', views.IndexView.as_view(), name='index'), + path('/', views.ProjectView.as_view(), name='view'), ] diff --git a/projects/views.py b/projects/views.py index 8f914a0..ed37e2c 100644 --- a/projects/views.py +++ b/projects/views.py @@ -1,20 +1,22 @@ -from django.shortcuts import get_object_or_404, render +from django.views import generic from .models import Project -from issues.models import Issue -def index(request): - project_list = Project.objects.order_by('project_key') - return render(request, 'projects/index.html', { - 'project_list': project_list, - }) +class IndexView(generic.ListView): + template_name = 'projects/index.html' + context_object_name = 'project_list' + + def get_queryset(self): + return Project.objects.order_by('project_key') -def view(request, project_key): - project = get_object_or_404(Project, project_key=project_key) - issue_list = Issue.objects.filter(project=project.id).order_by('create_date') - return render(request, 'projects/view.html', { - 'project': project, - 'issue_list': issue_list, - }) +class ProjectView(generic.DetailView): + model = Project + template_name = 'projects/view.html' + slug_field = slug_url_kwarg = 'project_key' + + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + context['issue_list'] = self.get_object().issue_set.order_by('create_date') + return context