实训项目第二周1

来源:互联网 发布:vb.net 多线程实例 编辑:程序博客网 时间:2024/06/07 23:59

上周我与组员一起完成了数据库的构建,这周我们的项目架构已经初步成型

用户提交代码注册和登陆都需要对数据库进行连接,这是注册(register)和登陆(login)的代码

# -*- 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'))


register包括email、username、password、check_email、check_username

login包括email、password

错误列表、代码储存和论坛

原创粉丝点击