基本的配置已经完成了,来看看最重要的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)的更多相关文章

  1. django 简单会议室预约(6)

    后台完了现在来看前端,前端用了一个bootstrap框架,看起来能好看点 先看一下文件结构:在djapp里创建了两个文件夹templates和static templates里面是要显示的页面,sta ...

  2. django 简单会议室预约(5)

    再来看看views.py的后半部分,对数据库的增删改查 #获取学院列表 def get_acad_list(): room_list = ConfeRoom.objects.all() #对数据库的操 ...

  3. django 简单会议室预约(2)

    --我们先打开settings.py 配置文件: import os #指明django APP目录路径 BASE_DIR = os.path.dirname(os.path.dirname(os.p ...

  4. django 简单会议室预约(1)

    django 是python的一个web框架,为什么要用django,作者之前用过另一个框架flask,虽然flask比较简单很容易让人学,但是flask没有整体感,会让初学着茫然. 这里我们用dja ...

  5. django 简单会议室预约(3)

    URL配置: 今天配置一下URL,打开urls.py配置如下: from django.conf.urls import patterns, include, url from djapp impor ...

  6. DJango简单的后台定义登录验证

    第一步创建一个新的项目 APPLICATIONNAME : 表示创建子项目 第二步:找到主项目的url 进行 include 分发式url 简单的说,就是将app里边的url放在这里. 这里也可以找到 ...

  7. 基于django的会议室预订系统

    会议室预订系统 一.目标及业务流程 期望效果: 业务流程: 用户注册 用户登录 预订会议室 退订会议室 选择日期:今日以及以后日期 二.表结构设计和生成 1.models.py(用户继承Abstrac ...

  8. Django简单的数据库操作

    当然,本篇的前提是你已经配置好了相关的环境,这里就不详细介绍. 一. 在settings.py文件中设置数据库属性. 如下: DATABASES = { 'default': { 'ENGINE': ...

  9. 循序渐进Python3(十二) --2--  web框架之django简单实现oracle数据库操作

    在 Django 中构建 Oracle 数据库支持的 Web 应用程序 了解如何配置 Django 以便与 Oracle 数据库交互,并使用 ORM 进行数据库连接.             产能在软 ...

随机推荐

  1. CheckBox:屏蔽setChecked方法对OnCheckedChangeListener的影响

    对于CheckBox的OnCheckedChangeListener,有两种情况下会被触发: (1)用户点击了一下CheckBox: (2)代码中调用了setChecked(boolean check ...

  2. div动态加载页面

    div动态加载页面 /* /// method 1 var url="<%=basePath%>/qne.do?p=pessegerCountSet"; $.post( ...

  3. 记一次 CORS 跨域请求出现 OPTIONS 请求的问题及解决方法

    今天前后端在联调接口的时候,发生了跨域请求资源获取不到的问题. 首先说明下跨域问题的由来.引自HTTP 访问控制 的一段话: 当 Web 资源请求由其它域名或端口提供的资源时,会发起跨域 HTTP 请 ...

  4. tar---打包,解压缩linux的文件和目录

    tar命令可以为linux的文件和目录创建档案.利用tar,可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件.tar最初被用来在磁带上创建档案,现在,用户可以在 ...

  5. 可靠的UDP连接 & MTU MSS

    这个网页里面写了: http://blog.csdn.net/plusboy/article/details/1523308 其可靠性必须由上层应用实现.一般都会采用消息重传来实现其可靠性,采用消息重 ...

  6. mongodb官网文档阅读笔记:write concern

    write concern保证了mongodb写操作的级别,不同的write concern设置相应了不同级别的写操作.设置的级别越高.那么写操作的性能的持久化做得越好,可是写性能也就越差. mong ...

  7. 第一天,Mysql安装,DDL(数据库定义语言),DBA,DML(数据库操纵语言),导入外面的sql文件

    把“D:\mysql-5.6.22-winx64\bin”添加到系统环境变量path中了,然后在任意目录可访问mysql等命令,这样如登录等操作就不需要进入MySQL安装目录才好执行! MySQL下载 ...

  8. 动态规划 LCS,LIS

    1.最大连续子序列 dp[i]=max(dp[i-1]+a[i],a[i]) 以i为结尾 2.最大不连续子序列 dp[i]=max(dp[j]+a[i],dp[j]) 3.最大连续递增子序列 if a ...

  9. js---06函数传参数

    <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...

  10. android-从官网下拉源码(ubuntu)

    今天终于成功的从谷歌官网上下载了android 源码.中间折腾了好久,最终总算有所收获 1.下载repo curl https://storage.googleapis.com/git-repo-do ...