这次我们对问题列表和论坛模块功能进行了完善和实现,
这是问题回复的代码
# -*- coding: utf-8 -*- from __future__ import unicode_literals from django.shortcuts import get_object_or_404, render, render_to_response # Create your views here. from django.http import HttpResponseRedirect, HttpResponse from django.urls import reverse from django.utils import timezone from django.template import loader, RequestContext from django.views import generic from django import forms from .models import Problem, User, SubmitCode, AcceptedCode, Discussion, Response class ResponseForm(forms.Form): text = forms.CharField(widget=forms.Textarea) code = forms.CharField(widget=forms.Textarea) problem list page class ProblemsView(generic.ListView): model = Problem template_name = 'judgeOL/problems.html' context_object_name = 'problem_list' @staticmethod def get_problems(page_num): if page_num > 20 or page_num < 0: page_num = 0 a = page_num*50 b = a+50 return Problem.objects.all()[a:b] # coding page , submit code , get result class CodingView(generic.TemplateView): template_name = 'judgeOL/coding.html' def get_context_data(self, **kwargs): context = super(CodingView, self).get_context_data(**kwargs) context['problem_id'] = self.kwargs['problem_id'] return context class EditView(generic.TemplateView): template_name = 'judgeOL/edit.html' def get_context_data(self, **kwargs): context = super(EditView, self).get_context_data(**kwargs) context['problem_id'] = self.kwargs['problem_id'] return context
def new_response(request, problem_id, discussion_id): if request.method == 'GET': response_form = ResponseForm() return HttpResponseRedirect(reverse('judgeOL:responses', kwargs={'problem_id': problem_id, 'discussion_id': discussion_id})) else: response_form = ResponseForm(request.POST) if response_form.is_valid(): pub_text = response_form.cleaned_data['text'] pub_code = response_form.cleaned_data['code'] user_id = request.session['user_id'] Response.objects.create(discussion_id=discussion_id, user_id=user_id, pub_text=pub_text, pub_code=pub_code, pub_date=timezone.now(), vote_count=1) return HttpResponseRedirect(reverse('judgeOL:responses', kwargs={'problem_id': problem_id, 'discussion_id': discussion_id}))