# encoding: utf-8 from django.contrib import auth from django.contrib.auth.forms import UserCreationForm from django.http import HttpResponse, HttpResponseRedirect from django.shortcuts import render_to_response, render from django.template import RequestContext from django.views.generic.base import View, TemplateView def math(request, a, b): a = int(a) b = int(b) s = a + b d = a - b p = a * b q = a / b return render_to_response('math.html', {'s': s, 'd': d, 'p': p, 'q': q}) def welcome(request): """simple welcome page to demo query string :request: user request :returns: http response with username or origin welcome page """ if 'user_name' in request.GET and request.GET['user_name'] != '': return HttpResponse('Welcome!~'+request.GET['user_name']) else: return render_to_response('welcome.html', locals()) def login(request): """user login webpage :request: client request :returns: index page if success, login page if fail """ if request.user.is_authenticated(): return HttpResponseRedirect('/index/') username = request.POST.get('username', '') password = request.POST.get('password', '') user = auth.authenticate(username=username, password=password) if user is not None and user.is_active: auth.login(request, user) return HttpResponseRedirect('/index/') else: return render_to_response('login.html', RequestContext(request, locals())) def logout(request): """logout view :request: client request :returns: index webpage """ auth.logout(request) return HttpResponseRedirect('/index/') def register(request): """new user register page :request: client request :returns: redirect to login page if success else register page """ if request.method == 'POST': form = UserCreationForm(request.POST) if form.is_valid(): user = form.save() return HttpResponseRedirect('/accounts/login/') else: form = UserCreationForm() return render(request, 'register.html', locals()) class HereView(View): """first class view """ def get(self, request): """process http GET :request: request :returns: response """ return HttpResponse('媽,我在這!') class IndexView(TemplateView): """rewrite index view with class-based view""" template_name = 'index.html'