django 简单会议室预约(4)
基本的配置已经完成了,来看看最重要的views.py
先看看简单的注册登录功能,在django里有一个专门的模块用来验证用户信息 ;所以只需要调用就好了:
#-*-coding:utf-8 -*-
from django.shortcuts import render_to_response
from django.template import RequestContext
from django.http import HttpResponseRedirect
from django.contrib.auth.models import User #django 自带后台管理模块
from django.contrib import auth
from models import *
#主页
def index(req):
username=req.session.get('username', '')
content = {'active_menu': 'homepage', 'user': username}
return render_to_response('index.html', content)#将数据返回到前台
#注册
def regist(req):
if req.session.get('username', ''):#获取session用来判断用户是否登录
return HttpResponseRedirect('/')
status=""
if req.POST:
username = req.POST.get("username","") #从前台获得用户注册信息,判断,存入数据库
if User.objects.filter(username=username):
status = "user_exist"
else:
password=req.POST.get("password","")
repassword = req.POST.get("repassword","")
if password!=repassword:
status = "re_err"
else:
newuser=User.objects.create_user(username=username,password=password)
newuser.save()
new_myuser = MyUser(user=newuser,phone=req.POST.get("phone"))
new_myuser.save()
status = "success"
return HttpResponseRedirect("/login/")
return render_to_response("regist.html",{"active_menu":"hompage","status":status,"user":""},context_instance=RequestContext(req))
#登录
def login(req):
if req.session.get('username', ''):
return HttpResponseRedirect('/')
status=""
if req.POST:
username=req.POST.get("username","")
password=req.POST.get("password","")
user = auth.authenticate(username=username,password=password)
if user is not None:
auth.login(req,user)
req.session["username"]=username #保存登录会话
return HttpResponseRedirect('/')
else:
status="not_exist_or_passwd_err"
return render_to_response("login.html",{"status":status},context_instance=RequestContext(req))
#退出登录
def logout(req):
auth.logout(req)
return HttpResponseRedirect('/')
注册、登录是对数据库的基本增、查;而django提供了高级API
使用filter()方法来过滤数据,判断用户名是否在数据库中:
User.objects.filter(username=username)
相当于SQL语句:
SELECT username FROM auth_user WHERE username=username;
使用create_user辅助函数创建用户,只用了username和password两个属性;这里User和MyUser是一对一的关系,用户名和密码直接调用,然后加上用户电话号码
User.objects.create_user(username=username,password=password)
MyUser(user=newuser,phone=req.POST.get("phone"))
以上只是表示准备向数据库存的数据,完了后要用.save()才能存到数据库里
相当于SQL语句:
INSERT INTO auth_user(username,password) VALUES ("username","password");
auth的authenticate()函数验证用户名和密码,不用再查数据库:
auth.authenticate(username=username,password=password)
auth.login(req,user) #auth的login()函数是登录
auth.logout(req) #auth的logout()函数是注销
到此,一个简单的注册登录就完成了。
django 简单会议室预约(4)的更多相关文章
- django 简单会议室预约(6)
后台完了现在来看前端,前端用了一个bootstrap框架,看起来能好看点 先看一下文件结构:在djapp里创建了两个文件夹templates和static templates里面是要显示的页面,sta ...
- django 简单会议室预约(5)
再来看看views.py的后半部分,对数据库的增删改查 #获取学院列表 def get_acad_list(): room_list = ConfeRoom.objects.all() #对数据库的操 ...
- django 简单会议室预约(2)
--我们先打开settings.py 配置文件: import os #指明django APP目录路径 BASE_DIR = os.path.dirname(os.path.dirname(os.p ...
- django 简单会议室预约(1)
django 是python的一个web框架,为什么要用django,作者之前用过另一个框架flask,虽然flask比较简单很容易让人学,但是flask没有整体感,会让初学着茫然. 这里我们用dja ...
- django 简单会议室预约(3)
URL配置: 今天配置一下URL,打开urls.py配置如下: from django.conf.urls import patterns, include, url from djapp impor ...
- DJango简单的后台定义登录验证
第一步创建一个新的项目 APPLICATIONNAME : 表示创建子项目 第二步:找到主项目的url 进行 include 分发式url 简单的说,就是将app里边的url放在这里. 这里也可以找到 ...
- 基于django的会议室预订系统
会议室预订系统 一.目标及业务流程 期望效果: 业务流程: 用户注册 用户登录 预订会议室 退订会议室 选择日期:今日以及以后日期 二.表结构设计和生成 1.models.py(用户继承Abstrac ...
- Django简单的数据库操作
当然,本篇的前提是你已经配置好了相关的环境,这里就不详细介绍. 一. 在settings.py文件中设置数据库属性. 如下: DATABASES = { 'default': { 'ENGINE': ...
- 循序渐进Python3(十二) --2-- web框架之django简单实现oracle数据库操作
在 Django 中构建 Oracle 数据库支持的 Web 应用程序 了解如何配置 Django 以便与 Oracle 数据库交互,并使用 ORM 进行数据库连接. 产能在软 ...
随机推荐
- 惊叹计算机运行速度的提升---以n Queens 问题为例
1 介绍 实现了书<Data Structures and Program design in C++>(Robert L. Kruse and Alexander J. Ryba, 20 ...
- vue9 计算属性 computed
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Android Design Support Library初探,NavigationView实践
前言 在前几天的IO大会上,Google带来了Android M,同时还有Android支持库的新一轮更新,其中更是增加一个全新的支持库Android Design Support Library,包 ...
- GitHub开源控件的使用合集
Android的加载动画AVLoadingIndicatorView 项目地址: https://github.com/81813780/AVLoadingIndicatorView 首先,在 bui ...
- legend---七、jquery如何选中select的selected的选择上的自定义属性
legend---七.jquery如何选中select的selected的选择上的自定义属性 一.总结 一句话总结:用冒号属性选择器 var type=$(this).children('option ...
- Ubuntu 13.04/CentOS 6.4 下C++开发时的相关设置
Ubuntu 13.04/CentOS 6.4 下C++开发时的相关设置 一.基本设置 首先,为了可以使我们的c++ 可以找到 iostream类,std标准库,我们需要在C/C++ General- ...
- apidoc接口文档的快速生成
官方文档连接:http://apidocjs.com/#demo apidoc是一个轻量级的在线REST接口文档生成系统,支持多种主流语言,包括Java.C.C#.PHP和Javascript等.使用 ...
- Alternating Sum
http://codeforces.com/problemset/problem/963/A 不考虑正负的话,每两项之间之间公比为b/a,考虑正负,则把k段作为循环节,循环节育循环节之间公比为(b/a ...
- Linux下解压缩文件命令总结
---------------------------------------------tar命令: -v 可视化-c 新建包-f 指定文件名(除非你用默认用户名)-x 解压target.tar-r ...
- input[type=date]
::-webkit-datetime-edit – 控制编辑区域的 ::-webkit-datetime-edit-fields-wrapper – 控制年月日这个区域的 ::-webkit-date ...