当前位置:Gxlcms > 数据库问题 > 3 项目开发 - 数据库

3 项目开发 - 数据库

时间:2021-07-01 10:21:17 帮助过:15人阅读

  • 查看已安装: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=uimage/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‘))

    3 项目开发 - 数据库

    标签:ras   read   编写   man   span   key   错误   setup.py   nbsp   

    人气教程排行