use generic views

This commit is contained in:
Lexi / Zoe 2019-06-03 17:57:25 +02:00
parent 23f3d2a96f
commit 89e0328a53
Signed by: binaryDiv
GPG Key ID: F8D4956E224DA232
4 changed files with 37 additions and 29 deletions

View File

@ -4,7 +4,7 @@ from . import views
app_name = 'issues' app_name = 'issues'
urlpatterns = [ urlpatterns = [
path('', views.index, name='index'), path('', views.IndexView.as_view(), name='index'),
path('new', views.new, name='new'), path('new', views.new, name='new'),
path('<int:issue_id>/', views.detail, name='detail'), path('<int:issue_id>/', views.DetailView.as_view(), name='detail'),
] ]

View File

@ -1,24 +1,30 @@
from django.http import HttpResponseRedirect 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 .forms import IssueForm
from .models import Issue from .models import Issue
def index(request): class IndexView(generic.ListView):
issue_list = Issue.objects.order_by('create_date') template_name = 'issues/index.html'
return render(request, 'issues/index.html', { context_object_name = 'issue_list'
'issue_list': issue_list,
}) def get_queryset(self):
return Issue.objects.order_by('create_date')
def detail(request, issue_id): class DetailView(generic.DetailView):
issue = get_object_or_404(Issue, pk=issue_id) model = Issue
return render(request, 'issues/detail.html', { template_name = 'issues/detail.html'
'issue': issue, pk_url_kwarg = 'issue_id'
})
# class NewIssueForm(generic.FormView):
# template_name = 'issues/new.html'
# form_class = IssueForm
# success_url =
def new(request): def new(request):
if request.method == 'POST': if request.method == 'POST':
form = IssueForm(request.POST) form = IssueForm(request.POST)

View File

@ -4,6 +4,6 @@ from . import views
app_name = 'projects' app_name = 'projects'
urlpatterns = [ urlpatterns = [
path('', views.index, name='index'), path('', views.IndexView.as_view(), name='index'),
path('<project_key>/', views.view, name='view'), path('<slug:project_key>/', views.ProjectView.as_view(), name='view'),
] ]

View File

@ -1,20 +1,22 @@
from django.shortcuts import get_object_or_404, render from django.views import generic
from .models import Project from .models import Project
from issues.models import Issue
def index(request): class IndexView(generic.ListView):
project_list = Project.objects.order_by('project_key') template_name = 'projects/index.html'
return render(request, 'projects/index.html', { context_object_name = 'project_list'
'project_list': project_list,
}) def get_queryset(self):
return Project.objects.order_by('project_key')
def view(request, project_key): class ProjectView(generic.DetailView):
project = get_object_or_404(Project, project_key=project_key) model = Project
issue_list = Issue.objects.filter(project=project.id).order_by('create_date') template_name = 'projects/view.html'
return render(request, 'projects/view.html', { slug_field = slug_url_kwarg = 'project_key'
'project': project,
'issue_list': issue_list, 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