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'
urlpatterns = [
path('', views.index, name='index'),
path('', views.IndexView.as_view(), name='index'),
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.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)

View File

@ -4,6 +4,6 @@ from . import views
app_name = 'projects'
urlpatterns = [
path('', views.index, name='index'),
path('<project_key>/', views.view, name='view'),
path('', views.IndexView.as_view(), name='index'),
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 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