3 项目开发 - 数据库

1 环境安装

  • 新建虚拟环境:mkvirtualenv mxonline
  • 查看已安装:pip list
  • django安装:pip install django==1.9
  • django离线安装:下载个django压缩包,workon XX 进入虚拟环境,进入解压包执行 python setup.py install
  • 安装mysql驱动:pip install MySQL_python-1.2.5-cp27-none-win_amd64.whl

2 新建项目

  • 虚拟环境位置 C:\Users\Aaron\Envs\mxonline\Scripts\python.exe

  • 数据库设置
1 DATABASES = {
2     ‘default‘: {
3         ‘ENGINE‘: ‘django.db.backends.mysql‘,
4         ‘NAME‘: ‘XX‘,
5         ‘USER‘: ‘root‘,
6         ‘PASSWORD‘: ‘‘,
7         ‘HOST‘: ‘127.0.0.1‘
8     }
9 }
  • 新建数据库

  • 生成django默认表
  1. 首先执行:Tools > Run manage.py Task
  2. makemigrations
  3. migrate
  • 启动服务并访问

3 新建APP

  • 新建app
  1. 首先执行:Tools > Run manage.py Task
  2. startapp users
  • 编写users的models
 1 #_*_ encoding:utf-8 _*_
 2 from __future__ import unicode_literals
 3 from datetime import datetime
 4
 5 from django.db import models
 6 from django.contrib.auth.models import AbstractUser
 7
 8
 9 class UserProfile(AbstractUser):
10     nick_name = models.CharField(max_length=50, verbose_name=u‘昵称‘, default=‘‘)
11     birday = models.DateField(verbose_name=u‘生日‘, null=True, blank=True)
12     gender = models.CharField(max_length=6, choices=((‘male‘, u‘男‘), (‘female‘, u‘女‘)), default=‘female‘)
13     address = models.CharField(max_length=100, default=u‘‘)
14     mobile = models.CharField(max_length=11, null=True, blank=True)
15     image = models.ImageField(upload_to=‘image/%Y/%m‘, default=u‘image/default.png‘, max_length=100)
16
17     class Meta:
18         verbose_name = u‘用户信息‘
19         verbose_name_plural = verbose_name
20
21     def __unicode__(self):
22         return self.username
23
24
25 class EmailVerifyRecord(models.Model):
26     code = models.CharField(max_length=20, verbose_name=u‘验证码‘)
27     email = models.EmailField(max_length=50, verbose_name=u‘邮箱‘)
28     send_type = models.CharField(max_length=10, choices=((‘register‘, u‘注册‘), (‘forget‘, u‘忘记密码‘)))
29     send_time = models.DateTimeField(default=datetime.now)
30
31     class Meta:
32         verbose_name = u‘邮箱验证码‘
33         verbose_name_plural = verbose_name
34
35
36 class Banner(models.Model):
37     title = models.CharField(max_length=100, verbose_name=u‘标题‘)
38     image = models.ImageField(max_length=100, upload_to=‘banner/%Y/%m‘, verbose_name=u‘轮播图‘)
39     url = models.URLField(max_length=200, verbose_name=u‘访问地址‘)
40     index = models.IntegerField(default=100, verbose_name=u‘顺序‘)
41     add_time = models.DateTimeField(default=datetime.now, verbose_name=u‘添加时间‘)
42
43     class Meta:
44         verbose_name = u‘轮播图‘
45         verbose_name_plural = verbose_name
  • 注册app
1 INSTALLED_APPS = [
2     ‘django.contrib.admin‘,
3     ‘django.contrib.auth‘,
4     ‘django.contrib.contenttypes‘,
5     ‘django.contrib.sessions‘,
6     ‘django.contrib.messages‘,
7     ‘django.contrib.staticfiles‘,
8     ‘users‘
9 ]
  • 重载一个setting的方法

1 AUTH_USER_MODEL = ‘users.UserProfile‘

  • 安装Pillow
  1. 错误信息:users.UserProfile.image: (fields.E210) Cannot use ImageField because Pillow is not installed.
  2. 安装:pip install Pillow
  • 生成users app的表
  1. 首先执行:Tools > Run manage.py Task
  2. makemigrations users
  3. migrate users
  • 新建app
  1. 首先执行:Tools > Run manage.py Task
  2. startapp courses
  • 编写courses的models
 1 #_*_ encoding:utf-8 _*_
 2 from __future__ import unicode_literals
 3 from datetime import datetime
 4
 5 from django.db import models
 6
 7
 8 class Course(models.Model):
 9     name = models.CharField(max_length=50, verbose_name=u‘课程名称‘)
10     desc = models.CharField(max_length=300, verbose_name=u‘课程描述‘)
11     detail = models.TextField(verbose_name=u‘课程详情‘)
12     degree = models.CharField(max_length=2, choices=((‘cj‘,‘初级‘), (‘zj‘,‘中级‘), (‘gj‘,‘高级‘)))
13     learn_times = models.IntegerField(default=0, verbose_name=u‘学习时长(分钟)‘)
14     students = models.IntegerField(default=0, verbose_name=u‘学习人数‘)
15     fav_nums = models.IntegerField(default=0, verbose_name=u‘收藏人数‘)
16     image = models.ImageField(max_length=100, upload_to=‘courses/%Y/%m‘, verbose_name=u‘封面图‘)
17     click_nums = models.IntegerField(default=0, verbose_name=u‘点击数‘)
18     add_time = models.DateTimeField(default=datetime.now, verbose_name=u‘添加时间‘)
19
20     class Meta:
21         verbose_name = u‘课程‘
22         verbose_name_plural = verbose_name
23
24
25 class Lesson(models.Model):
26     course = models.ForeignKey(Course, verbose_name=u‘课程‘)
27     name = models.CharField(max_length=100, verbose_name=u‘章节名‘)
28     add_time = models.DateTimeField(default=datetime.now, verbose_name=u‘添加时间‘)
29
30     class Meta:
31         verbose_name = u‘章节‘
32         verbose_name_plural = verbose_name
33
34
35 class Video(models.Model):
36     lesson = models.ForeignKey(Course, verbose_name=u‘章节‘)
37     name = models.CharField(max_length=100, verbose_name=u‘视频名‘)
38     add_time = models.DateTimeField(default=datetime.now, verbose_name=u‘添加时间‘)
39
40     class Meta:
41         verbose_name = u‘视频‘
42         verbose_name_plural = verbose_name
43
44
45 class CourseResource(models.Model):
46     course = models.ForeignKey(Course, verbose_name=u‘课程‘)
47     name = models.CharField(max_length=100, verbose_name=u‘资源名称‘)
48     download = models.FileField(max_length=100, upload_to=‘course/resource/%Y/%m‘, verbose_name=u‘资源文件‘)
49     add_time = models.DateTimeField(default=datetime.now, verbose_name=u‘添加时间‘)
50
51     class Meta:
52         verbose_name = u‘课程资源‘
53         verbose_name_plural = verbose_name
  • 新建app
  1. 首先执行:Tools > Run manage.py Task
  2. startapp organization
  • 编写organization的models
 1 #_*_ encoding:utf-8 _*_
 2 from __future__ import unicode_literals
 3 from datetime import datetime
 4
 5 from django.db import models
 6
 7
 8 class CityDict(models.Model):
 9     name = models.CharField(max_length=20, verbose_name=u‘城市‘)
10     desc = models.CharField(max_length=200, verbose_name=u‘描述‘)
11     add_time = models.DateTimeField(default=datetime.now)
12
13     class Meta:
14         verbose_name = u‘城市‘
15         verbose_name_plural = verbose_name
16
17
18 class CourseOrg(models.Model):
19     name = models.CharField(max_length=50, verbose_name=u‘机构名称‘)
20     desc = models.TextField(verbose_name=u‘机构描述‘)
21     click_nums = models.IntegerField(default=0, verbose_name=u‘点击数‘)
22     fav_nums = models.IntegerField(default=0, verbose_name=u‘收藏数‘)
23     image = models.ImageField(upload_to=‘org/%Y/%m‘, verbose_name=u‘封面图片‘)
24     address = models.CharField(max_length=150, verbose_name=u‘机构地址‘)
25     city = models.ForeignKey(CityDict, verbose_name=u‘所在城市‘)
26     add_time = models.DateTimeField(default=datetime.now)
27
28     class Meta:
29         verbose_name = u‘课程机构‘
30         verbose_name_plural = verbose_name
31
32
33 class Teacher(models.Model):
34     org = models.ForeignKey(CourseOrg, verbose_name=u‘所属机构‘)
35     name = models.CharField(max_length=50, verbose_name=u‘教师名‘)
36     work_years = models.IntegerField(default=0, verbose_name=u‘工作年限‘)
37     work_company = models.CharField(max_length=50, verbose_name=u‘就职公司‘)
38     points = models.CharField(max_length=50, verbose_name=u‘教学特点‘)
39     click_nums = models.IntegerField(default=0, verbose_name=u‘点击数‘)
40     fav_nums = models.IntegerField(default=0, verbose_name=u‘收藏数‘)
41     add_time = models.DateTimeField(default=datetime.now)
42
43     class Meta:
44         verbose_name = u‘教师‘
45         verbose_name_plural = verbose_name
  • 新建app
  1. 首先执行:Tools > Run manage.py Task
  2. startapp operation
  • 编写operation的models
 1 #_*_ encoding:utf-8 _*_
 2 from __future__ import unicode_literals
 3 from datetime import datetime
 4
 5 from django.db import models
 6
 7 from users.models import UserProfile
 8 from courses.models import Course
 9
10
11 class UserAsk(models.Model):
12     name = models.CharField(max_length=20, verbose_name=u‘姓名‘)
13     mobile = models.CharField(max_length=11, verbose_name=u‘手机‘)
14     course_name = models.CharField(max_length=50, verbose_name=u‘课程名‘)
15     add_time = models.DateTimeField(datetime.now, verbose_name=u‘添加时间‘)
16
17     class Meta:
18         verbose_name = u‘用户咨询‘
19         verbose_name_plural = verbose_name
20
21
22 class CourseComments(models.Model):
23     user = models.ForeignKey(UserProfile, verbose_name=u‘用户‘)
24     course = models.ForeignKey(Course, verbose_name=u‘课程‘)
25     comments = models.CharField(max_length=200, verbose_name=u‘评论‘)
26     add_time = models.DateTimeField(default=datetime.now, verbose_name=u‘添加时间‘)
27
28     class Meta:
29         verbose_name =u‘课程评论‘
30         verbose_name_plural = verbose_name
31
32
33 class UserFavorite(models.Model):
34     user = models.ForeignKey(UserProfile, verbose_name=u‘用户‘)
35     fav_id = models.IntegerField(default=0, verbose_name=u‘数据id‘)
36     fav_type = models.IntegerField(default=0, choices=((1,‘课程‘), (2,‘课程机构‘), (3,‘讲师‘)), verbose_name=u‘收藏类型‘)
37     add_time = models.DateTimeField(default=datetime.now, verbose_name=u‘添加时间‘)
38
39     class Meta:
40         verbose_name =u‘用户收藏‘
41         verbose_name_plural = verbose_name
42
43
44 class UserMessage(models.Model):
45     user = models.IntegerField(default=0, verbose_name=u‘接收用户‘)
46     messae = models.CharField(max_length=500, verbose_name=u‘消息内容‘)
47     has_read = models.BooleanField(default=False, verbose_name=u‘是否已读‘)
48     add_time = models.DateTimeField(default=datetime.now, verbose_name=u‘添加时间‘)
49
50     class Meta:
51         verbose_name =u‘用户消息‘
52         verbose_name_plural = verbose_name
53
54
55 class UserCourse(models.Model):
56     user = models.ForeignKey(UserProfile, verbose_name=u‘用户‘)
57     course = models.ForeignKey(Course, verbose_name=u‘课程‘)
58     add_time = models.DateTimeField(default=datetime.now, verbose_name=u‘添加时间‘)
59
60     class Meta:
61         verbose_name =u‘用户课程‘
62         verbose_name_plural = verbose_name
  • 注册app
 1 INSTALLED_APPS = [
 2     ‘django.contrib.admin‘,
 3     ‘django.contrib.auth‘,
 4     ‘django.contrib.contenttypes‘,
 5     ‘django.contrib.sessions‘,
 6     ‘django.contrib.messages‘,
 7     ‘django.contrib.staticfiles‘,
 8     ‘users‘,
 9     ‘course‘,
10     ‘organization‘,
11     ‘operation‘
12 ]
  • 生成数据表
  1. 执行命令:makemigrations
  2. 执行命令:migrate

4 合并APPS

  • 新建apps

    新建python package,名为apps

  • Mark Directory as > Source Root
  • 配置setting文件,把apps文件夹加入到python的搜索路径下
1 import os
2 import sys
3 # Build paths inside the project like this: os.path.join(BASE_DIR, ...)
4 BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
5 sys.path.insert(0, os.path.join(BASE_DIR, ‘apps‘))
时间: 2024-11-05 14:43:10

3 项目开发 - 数据库的相关文章

Android手机通讯录项目开发--联系人数据库contacts2.db介绍

项目描述:该项目为基于Android平台的手机通讯录,主要模块分为四个部分:联系人管理模块,通话记录管理模块,短信管理模块,系统设置模块. 系统结构图如下: 本项目启动时间:2014年5月28日 说明:本次开发项目的所有源码全部会分享给大家.开发此项目的目的有这几点:一.锻炼独立开发项目的能力,二.增加对Android开发的了解,三.熟悉Android通讯录机制. 闲话不多说,正式开始! 技术要点一:熟悉Android联系人数据库contacts2.db 1.获得联系人数据库contacts2.

嵌入式linux 项目开发(一)——SQLite数据库

嵌入式linux 项目开发(一)--SQLite数据库 一.SQLite数据库简介 SQLite是一个开源的嵌入式关系数据库,是一种轻量级的.自给自足的.无服务器的.无需配置的.事务性的SQL数据库引擎,其特点是高度便携.使用方便.结构紧凑.高效.可靠,体积小,支持 ACID(原子性.一致性.独立性及持久性Atomicity.Consistency.Isolation.Durability)事物. SQLite官网:http://www.sqlite.org/ SQLite数据库采用模块化设计,

第八章 企业项目开发--分布式缓存memcached

注意:本节代码基于<第七章 企业项目开发--本地缓存guava cache> 1.本地缓存的问题 本地缓存速度一开始高于分布式缓存,但是随着其缓存数量的增加,所占内存越来越大,系统运行内存越来越小,最后系统会被拖慢(这一点与第二点联系起来) 本地缓存存于本机,其缓存数量与大小受本机内存大小限制 本地缓存存于本机,其他机器的访问不到这样的缓存 解决方案:分布式缓存 Jboss cache:缓存还存于本机,但是会同步更新到其他机器(解决了第三个问题,解决不了第一和第二个问题),如果缓存机器数量很多

Hive项目开发环境搭建(Eclipse\MyEclipse + Maven)

写在前面的话 可详细参考,一定得去看 HBase 开发环境搭建(Eclipse\MyEclipse + Maven) Zookeeper项目开发环境搭建(Eclipse\MyEclipse + Maven) 我这里,相信,能看此博客的朋友,想必是有一定基础的了.我前期写了大量的基础性博文.可以去补下基础. 步骤一:File  ->  New  -> Project   ->  Maven Project 步骤二:自行设置,待会创建的myHBase工程,放在哪个目录下. 步骤三: 步骤四:

项目开发计划书

基于andriod校园网上订餐系统   项目开发计划         报告名称  校园网上订餐系统项目开发计划书 专    业  计算机科学与技术 班    级   信1201-1班 组长姓名   王雪青 组员名单   陆宇 赵建松 张文东 徐擎天 日    期   2015.6.13 指导教师  王建民 项目开发计划 V1.0 拟 制 人____王雪青________ 审 核 人____王雪青_________ 批 准 人____王雪青________ 二零一五年六月十三日 项 目 开 发 计

4、VS2010+ASP.NET MVC4+EF4+JqueryEasyUI+Oracle项目开发之——后台管理界面

这一章节比较简单,我就直接贴代码了,后台管理登陆界面如下: 对应的控制器HomeController.cs,代码如下: using YKT.Model; using YKT.Common; using YKT.BLL; using YKT.Common.HtmlHelpers; using YKT.Common.Functions; using Microsoft.Practices.Unity; using YKT.IBLL; namespace YKT.Controllers { publi

5、VS2010+ASP.NET MVC4+EF4+JqueryEasyUI+Oracle项目开发之——使用datagrid做报表统计

需要说明一点:数据库访问我使用的是EF框架,但是在报表统计着一块由于使用到了动态表,即根据每一天单独生成了一张数据表,所以不好使用EF进行预先添加,于是我在数据库访问层里面封装了两套数据库访问框架,一个就是EF,一个就是传统的ADO.NET.当设计到使用动态表时,我就调用用ADO.NET进行数据库访问操作了. 先看下View,这里我使用的是jquery easyUI里面的datagrid来做的报表.如下: 单击选中日报: 年报如下: @model YKT.Model.SubCompanyRepo

(我是初学者)第一次项目开发(一)

javaOO快学完了,马上要进行第一个项目联系了. 先给我们进行了项目开发的讲解: 首先,建立类的实体Bean,并把相关属性确定好,(讲解只有一个类) 第二步,查看项目有哪些功能,创建业务接口service,把需要的方法确定好 第三,根据我们写好的业务接口service,来建立持久接口dao,跟数据库建立连接,保证数据的提取,储存和修改 第四,建立持久接口的实现类,把接口中的方法具体化 第五,根据持久实现类中的方法,进行调用,完成业务接口实现类 第六,表现层,完成相应的界面Frame,并且调用业

项目开发流程

项目开发流程:1. 需求部门-外包公司的叫法   (产品部门) 一般在做自己的产品才有   外包公司: 1.分为产品外包,人家公司要做一个系统,外包公司接过来做  需求部门:了解客户的需求,整理成需求文档   2.人才外包 2.技术部 架构师或者技术经理(项目经理)将需求部门的需求文档分析以后形成一个系统的需求分析文档 将功能细化 3.概要设计(架构师,技术经理) 形成数据库设计,db设计文档 定义出当前系统的各个业务模块,模块中的具体功能,以及此系统和外部对接的api 以及当前系统中各个子系统