django开发3_mysql数据库的配置

1、搭建环境导入的pymysql库为链接python与mysql的工具,pillow为保存图像的库。

2、在settings中修改配置如下

添加mysql的配置(mysql数据库中必须先创建好数据库blog)

 3、在__init__文件下添加如下

4、在app下的models下添加如下,

ps:第一个class为定义一个模型,有一列为name,但是django会自动生成一列id,所以为两列(也在生成数据库表后查看)

第二个class 为该模型内的定义,verbose_name 为该模型的名称,也在后面的admin中查看(以后讲),第二行verbose_name_plural为该模型复数像是的形式

def为直接调用该模型的时候返回的数值

class Meta  与 def __unicode__也有可无,不影响现阶段测试数据库。

5、继承django自带的Django来实现用户模型(可学可不学)

从django的登录认证模板继承原来的User,在进行扩展,如下配置

因为原来也有一个名为User的模型存在,所以要在settings下制定用哪一个User

在settings下添加如下

6、测试如下

可在pycharm自带的工具下,进行manage的操作,也可以在cmd下,进入虚拟环境后,切换到该想下用manage命令运行(百度)

输入命令如下,出现如下画面,执行成功

ps:生成创建模型的一个执行脚本

在执行syncdb执行模型脚本,并创建一个admin管理员(第一次执行的时候用,以后直接用migrate blog,创建,该命令不会创建admin用户)

ps:对models文件有任何修改,都需要重新生成一次脚本文件,执行。

出现如上,执行成功,可在数据库查看表有无创建成功

 

ps:因为我的models中存在多个表,所有有多个表。

models:源文件如下

#coding:utf-8
from django.db import models
from django.contrib.auth.models import AbstractUser

# Create your models here.

#用户信息
class User(AbstractUser):
avatar = models.ImageField(upload_to='avatar/%Y/%m',default='avatar/default.png',max_length=200,verbose_name='头像')
qq = models.CharField(max_length=20,blank=True,null=True,verbose_name='QQ号码')
mobile = models.CharField(max_length=11,blank=True,null=True,unique=True,verbose_name='手机号码')

class Meta:
verbose_name = '用户'
verbose_name_plural = verbose_name
ordering = ['-id']

def __unicode__(self):
return self.username

#标签
class Tag(models.Model):
name = models.CharField(max_length=30,verbose_name='标签名称')

class Meta:
verbose_name = '标签'
verbose_name_plural = verbose_name

def __unicode__(self):
return self.name

#分类
class Category(models.Model):
name = models.CharField(max_length=30,verbose_name='分类名称')
index = models.IntegerField(default=999,verbose_name='分类的排序')

class Meta:
verbose_name = '分类'
verbose_name_plural = verbose_name

def __unicode__(self):
return self.name


#文章模型
class Article(models.Model):
title = models.CharField(max_length=50,verbose_name='文章标题')
desc = models.CharField(max_length=50,verbose_name='文章描述')
content = models.TextField(verbose_name='文章内容')
click_count = models.IntegerField(default=0,verbose_name='点击次数')
is_recommend = models.BooleanField(default=False,verbose_name='是否推荐')
date_publish = models.DateTimeField(auto_now_add=True,verbose_name='发布时间')
user = models.ForeignKey(User,verbose_name='用户')
category = models.ForeignKey(Category,blank=True,null=True,verbose_name='分类')
tag = models.ManyToManyField(Tag,verbose_name='标签')

class Meta:
verbose_name = '文章'
verbose_name_plural = verbose_name
ordering = ['-date_publish']

def __unicode__(self):
return self.title

#评论模型
class Comment(models.Model):
content = models.TextField(verbose_name='评论内容')
date_publish = models.DateTimeField(auto_now_add=True,verbose_name='发布时间')
user = models.ForeignKey(User,blank=True,null=True,verbose_name='用户')
article = models.ForeignKey(Article,blank=True,null=True,verbose_name='文章')
pid = models.ForeignKey('self',blank=True,null=True,verbose_name='父级评论')

class Meta:
verbose_name = '评论'
verbose_name_plural = verbose_name
ordering = ['-date_publish']

def __unicode__(self):
return str(self.id)

#友情链接
class Link(models.Model):
title = models.CharField(max_length=50,verbose_name='标题')
description = models.CharField(max_length=200,verbose_name='友情链接描述')
callback_url = models.URLField(verbose_name='url地址')
date_publish = models.DateTimeField(auto_now_add=True,verbose_name='发布时间')
index = models.IntegerField(default=999,verbose_name='排列顺序(从小到大)')

class Meta:
verbose_name = '友情链接'
verbose_name_plural = verbose_name
ordering = ['index','id']

def __unicode__(self):
return self.title

#广告
class Ad(models.Model):
title = models.CharField(max_length=50,verbose_name='广告标题')
description = models.CharField(max_length=200,verbose_name='广告描述')
image_url = models.ImageField(upload_to='ad/%Y/%m',verbose_name='图片路径')
callback_url = models.URLField(null=True,blank=True,verbose_name='回调URL')
date_publish = models.DateTimeField(auto_now_add=True,verbose_name='发布时间')
index = models.IntegerField(default=999,verbose_name='排序顺序(从小到大)')

class Meta:
verbose_name = '广告'
verbose_name_plural = verbose_name
ordering = ['index','id']

def __unicode__(self):
return self.title
posted @ 2018-08-05 10:48  齐小灰  阅读(646)  评论(0编辑  收藏  举报