2017年5月-6月,本小组做山东大学软件工程专业项目实训。我们做的项目是“基于信号处理的在线云评测+社区系统”,我和另一位组员@zhan010g负责数据库后台方面。
本周我们写了以下代码来实现用户注册登录提交代码等功能。
其中注册(register)包括email,username,password,check_email,check_username。
登录(login)包括email,password。
# -*- 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.template import loader,RequestContext
from django.views import generic
from django import forms
from .models import Problem,User,SubmitCode,AcceptedCode,Discussion,Response
class LoginForm(forms.Form):
email = forms.CharField(label='email',max_length=32)
password = forms.CharField(label='password',widget=forms.PasswordInput())
class RegisterForm(forms.Form):
email = forms.CharField(label='email',max_length=32)
username = forms.CharField(label='username',max_length=16)
password = forms.CharField(label='password',widget=forms.PasswordInput())
class LoginView(generic.TemplateView):
template_name = 'judgeOL/login.html'
#register page
class RegisterView(generic.TemplateView):
template_name = 'judgeOL/register.html'
#problem list page
class ProblemsView(generic.ListView):
model = Problem
template_name = 'judgeOL/problems.html'
context_object_name = 'problem_list'
def get_problems( page_num):
return Problem.objects.all()[0:50]
#coding page , submit code , get resutl
class CodingView(generic.TemplateView):
template_name = 'judgeOL/coding.html'
#bbs page, so many discussions
class DiscussionView(generic.TemplateView):
template_name = 'judgeOL/discussions.html'
# every discussions have a lot of responses
class ResponseView(generic.TemplateView):
template_name = 'judgeOL/responses.html'
# editing page. for response and create a new discussion
class editView(generic.TemplateView):
template_name = 'judgeOL/edit.html'
def login(request):
if request.method == 'GET':
userform = LoginForm()
return render_to_response('judgeOL/login.html',RequestContext(request))
else:
userform = LoginForm(request.POST)
if userform.is_valid():
email = userform.cleaned_data['email']
password = userform.cleaned_data['password']
success = User.objects.filter(mail=email,password=password)
if success:
"""response.set_cookie('email',email,3600)
return HttpResponseRedirect('judgeOL:problems',RequestContext(request))"""
return HttpResponseRedirect(reverse('judgeOL:problems'))
else:
return HttpResponseRedirect(reverse('judgeOL:login'))
def register(request):
if request.method == 'GET':
userform = RegisterForm()
return HttpResponseRedirect(reverse('judgeOL:register'))
else:
userform = RegisterForm(request.POST)
if userform.is_valid():
email = userform.cleaned_data['email']
username = userform.cleaned_data['username']
password = userform.cleaned_data['password']
check_email = User.objects.filter(mail = email)
check_username = User.objects.filter(name = username)
if check_email and check_username:
return HttpResponseRedirect(reverse('judgeOL:register'))
else:
User.objects.create(name=username, password=password, mail=email)
return HttpResponseRedirect(reverse('judgeOL:login'))
方面的代码,对注册路径进行了具体分析。下面是我们注册路径的代码: