后台采用Django开发,可以体会到开发的便利之处,对于一个项目来说,首先最重要的是数据库的设计,那么在Django下数据库设计主要是如下步骤:

1,需求分析,这点子不用多说,而我也深刻体会到了没有原型的时候就开始开发的困难之处,每次需求更改就会带来后台的数据和对应接口的一次变更.费时费精力

2.有了需求,那么开始数据库的设计,在Django中,并不需要直接去操作数据库,而且使用继承modesl.Model的类,在类中定义自己的模型,然后使用Python manage.py syncdb就可看到数据库中的表了(先得在settings中设定好和数据库的连接)

3.主要说的是用户的定义问题,我采用的是比较老的方式,使用profile扩展,并没有采用继承抽象用户类的方式.

用户的模型Django已经帮我们集成了,我们要做的就是在自带的用户系统上扩展自己的数据,扩展方法如下:

class UserProfile(models.Model):
# 账号附加信息
user = models.OneToOneField(User,unique=True)
#下面定义一些自己的附加信息,比如性别等等

采用的是一对一的方式,而这种方式使用起来也很简单,比如使用User.objects.get得到了一个user,然后直接访问user.userprofile.属性就可以,userprofile是自己定义的扩展表的名称(Django1.5之前的老版本使用的是user的get_profile函数,但是官方推荐在新版本中时候类的方式访问)

  用户扩展到这里完成,而我们也可以使用Django带的auth系统,无需去关注cookies等细节了

数据库使用过程中注意的问题:

  1,创建用户必须使用User.objects.create_user官方提供的函数,不然auth的认证系统无法通过,而且通过这种方法创建的用户,密码是通过加密的,所以推荐有官方的api的时候就是用官方api,不然可能会造成框架的一些模块无法使用

  2.数据库编码务必采用utf-8

  3.官方自带的数据库抽象层由于其具有通用性,所以直接使用起来还是比较麻烦的,比如更改用户数据就必须同时去操作user和Userprofile两个表,所以这个时候我们可以在官方的抽象层上再写一层接口(调用的是Django自带的数据库抽象层),使得数据库接口更加切合业务逻辑(这样做相当于隔离了Django的数据库抽象层,使用起来更加方便).

  4.前后台通信是做前台和后台的交互的大问题,虽然Django自带了表单系统,但是对于前台来说,使用起来还是不习惯的,所以我放弃了Django的表单系统,前后台通信采用纯粹的变量,由于部分数据过多,而且通过模版渲染时的上下文传递也显得比较麻烦,所以就在自己写的接口上(3提到的屏蔽Django抽象层的接口)需要的函数,然后使用ajax的方式返回xml信息交给前台,也可以统一采用xml通信,但是由于Django的{{}}标签方式对于有些变量的传递还是非常方便的,所以就混合起来用了.

Django开发笔记之数据库的设计的更多相关文章

  1. Django开发笔记五

    Django开发笔记一 Django开发笔记二 Django开发笔记三 Django开发笔记四 Django开发笔记五 Django开发笔记六 1.页面继承 定义base.html: <!DOC ...

  2. Django开发笔记一

    Django开发笔记一 Django开发笔记二 Django开发笔记三 Django开发笔记四 Django开发笔记五 Django开发笔记六 1.运行 python manage.py runser ...

  3. Django开发笔记(一)

    Django开发笔记(一) 标签(空格分隔): Django Python 1. 创建并运行Django项目 创建开发环境 安装Django pip install django==version 执 ...

  4. Django开发笔记六

    Django开发笔记一 Django开发笔记二 Django开发笔记三 Django开发笔记四 Django开发笔记五 Django开发笔记六 1.登录功能完善 登录成功应该是重定向到首页,而不是转发 ...

  5. Django开发笔记四

    Django开发笔记一 Django开发笔记二 Django开发笔记三 Django开发笔记四 Django开发笔记五 Django开发笔记六 1.邮箱激活 users app下,models.py: ...

  6. Django开发笔记三

    Django开发笔记一 Django开发笔记二 Django开发笔记三 Django开发笔记四 Django开发笔记五 Django开发笔记六 1.基于类的方式重写登录:views.py: from ...

  7. Django开发笔记二

    Django开发笔记一 Django开发笔记二 Django开发笔记三 Django开发笔记四 Django开发笔记五 Django开发笔记六 1.xadmin添加主题.修改标题页脚和收起左侧菜单 # ...

  8. Django 学习笔记之三 数据库输入数据

    假设建立了django_blog项目,建立blog的app ,在models.py里面增加了Blog类,同步数据库,并且建立了对应的表.具体的参照Django 学习笔记之二的相关命令. 那么这篇主要介 ...

  9. Django学习笔记之数据库-数据库与模型

    MySQL数据库 在网站开发中,数据库是网站的重要组成部分.只有提供数据库,数据才能够动态的展示,而不是在网页中显示一个静态的页面.数据库有很多,比如有SQL Server.Oracle.Postgr ...

随机推荐

  1. java mail(发送邮件--163邮箱)

    package com.util.mail; /** * 发送邮件需要使用的基本信息 */ import java.util.Properties; public class MailSenderIn ...

  2. MVVM Command Binding: InvokeCommandAction v.s. EventToCommand

    This gives you the ability to create a trigger on an event and bind it to an ICommand on the view mo ...

  3. [LintCode] Pow(x, n) 求x的n次方

    Implement pow(x, n). Notice You don't need to care about the precision of your answer, it's acceptab ...

  4. JQ写法和js写法 方法函数化

    <script> $(function () { $('#head').click=function () { alert($(this).html()) } }) </script ...

  5. HDU 2546

    饭卡 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...

  6. 由easyui的tab在ie下渲染失败,发现的一个有意义的问题

    今天项目组的同事反映,在IE浏览器下,所有用easyui编写的tab控件都加载不出来,只会显示一个Loading的提示在控件的内容显示区. 刚分析这个问题,首先怀疑是使用easyui的tab的脚本写法 ...

  7. MySQL启动错误排查

    一般情况下mysql的启动错误还是很容易排查的,但是今天我们就来说一下不一般的情况.拿到一台服务器,安装完mysql后进行启动,启动错误如下: 有同学会说,哥们儿你是不是buffer pool设置太大 ...

  8. jquery_事件与动画

    事件绑定 bind(type[,data],fn)(无限触发) type:事件类型包括jquery中已有事件也可以自定义事件 data:可选参数,作为event.data属性传递给事件对象的额外数据对 ...

  9. NY-字符串替换

    描述编写一个程序实现将字符串中的所有"you"替换成"we" 输入 输入包含多行数据 每行数据是一个字符串,长度不超过1000 数据以EOF结束 输出 对于输入 ...

  10. BizTalk开发系列(三十)单向端口实现请求-响应

    BizTalk本质上是异步的消息处理引擎.BizTalk的请求与响应模式是基于异步之上的同步消息交换.消息引擎通过消息的扩展架构链接许 多异步消息,消息的相关集关联请求与响应消息.例如,客户端发送一个 ...