sqliteDjango+MySQL开发项目:内容管理体系cms(一)

Baker-Miller
Pink
被科学方式求证可以坦然心理并且抑制食欲的颜料,具有amazing的作用。基百里面说实验结果表明该颜色有所:
“a marked effect on lowering the heart rate, pulse and respiration as
compared to other colors.” 就是以此色儿:
sqlite 1
那篇内容相比长,我也是边做边写。打算烦的时候就回到看望
,亲测一下究竟有木有那么神奇~

一、环境搭建及项目准备

1,使用工具

现阶段python3唯有一个本子,不设有多付出条件争持的标题。
存在支付环境冲突的提议使用virtualenv来管理四个开发条件。

编辑器:Pycharm,python开发必备神器。
数据库管理工具: Navicat Premium, 数据库管理必备神器。

操作系统:OS X EI Capitan
python版本: 3.6.0
django版本: 1.11b1
数据库:pymysql 0.7.11

谷歌(Google)浏览器开发者工具

开发人员:具有较好的python基础和数据库基础、一定的前端基础、并对django又所了然。

连带文档:前端可以查阅 http://www.w3school.com.cn/index.html
对 django而言官方文档是最好的科目,没有之一。
可以参照这五个,https://www.djangoproject.com/start/http://djangobook.com/

英文不好可以对照着看django的华语文档:
推荐Tango中文版-> http://hackerxu.com/Twd/
自强学堂 ->
http://www.ziqiangxuetang.com/django/django-intro.html
http://docs.30c.org/djangobook2/

2,创立一个项目和一个应用

教程:https://docs.djangoproject.com/en/1.11/intro/tutorial01/
这一部分相对简便易行,按学科来就可以了。说多少个Pycharm的便利。

  1. 在Pycharm里面可以填上application的名字,就足以自行创造app。

sqlite 2

  1. 奇迹需求在极端运行命令,比如:python manage.py runserver,Pycharm能够少打那样多少个字
    python3 manage.py ...

sqlite 3

在内部只写命令就行runserver
现行开拓localhost就可以见到一个最简便的web-server应用已经跑起来了。

sqlite 4

二、数据库和Models

教程:https://docs.djangoproject.com/en/1.11/intro/tutorial02/

1,设置MySQL数据库

在项目工程文件的setting文件中修改:
在databases下将sqlite3配置注释,添加新的布局表达。

DATABASES = {
    'default': {
        # 'ENGINE': 'django.db.backends.sqlite3',
        # 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'main',
        'USER': 'username',
        'PASSWORD': '123456',
        'HOST': '127.0.0.1',
        'PORT': '3306',
    }
}

以此文件内还足以设置时区TIME_ZONE,就默认UTC就足以了。

还索要在INSTALLED_APPS字段里有添加app名称:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'corpus',
]

激活MySQL:

makemigrations
migrate

sqlite 5

为了有利于查阅数据库,我们得以不选择Navicate,而是使用pycharm的Database:
约莫步骤如下,不上图了。

  1. 下载驱动
  2. 填入数据库的名字,mysql的用户名和密码,进行延续。
  3. 得逞后点击右下角的apply和OK。

下一场嗒嗒,可以见见数据库里的表和内容了:

sqlite 6

2,编写Models

不记得何地读到,数据库是一个网站的魂魄。设计数据库此前先分析网站须求。

网站功用首要分为八个部分,梵文佛经展现(包含原文,各种注释等)和
用户音信保管。
1)经文段的来得:包蕴梵文原文,梵語非連聲方式,現代漢譯,注,護譯,什譯,读者评论(待定:读者修改、书签)。
2)注册用户音讯:昵称,邮箱,密码,评论的文章(待定:修改的篇章、添加书签)。
咱俩允许用户对一篇经文很多次评论(待定:或者涂改或者书签)。
多对多关系 -> manytomany
再就是会有不止一篇经文,大家须要对经典分类,比如一些属于法华经,有的属于俱舍论。
一对多关系 -> foreignkey 何人多写在哪个人里面
据此,近期停止,大家必要创设用户和经典,经文片段,评论多少个数据模型。

用户模型

(参考文献[1])[1]是那般做的:在django中内置有django.contrib.auth.models.User模块,那么些模块字段有限,可是大家得以一连django.contrib.auth.models.AbstractUser这几个类来扩展字段,之所以不自己写User模块,是因为内置的User模块使整个用户验证系统卓殊不难完毕,详见django文档
一初阶就是依据那几个来做的用户模型,代码如下:

class NewUser(AbstractUser):    
    profile = models.CharField('profile', default='',max_length=256)

    def __str__(self):
        return self.username

在sqllite下不成难点。在mysql下直接报错,原因大概是每行不可能领先65535。那几个bug搞了久久啊。

sqlite 7
无须忘了即使数据是utf8编码的话,要占一个字符算三。

sqlite 8

查阅stackoverflow大都提出修改表结构,而不是修改数据库配置文件。
改后如下:

class NewUser(models.Model):
    user = models.OneToOneField(User)
    profile = models.CharField('profile', blank=True, null=True, max_length=255)

    def __str__(self):
        return self.user.username

    class Meta:
        verbose_name = '用戶'
        verbose_name_plural = verbose_name

经文模型

这一部分要求专注charfield和textfield的采取。65535是不算textfield的,所以大段内容长内容最好用textfield幸免超字数的标题。详见django文档-Model
field
reference

class Column(models.Model):
    name = models.CharField('column_name', max_length=100)  # 经文名称
    intro = models.TextField('introduction', max_length=2048, default='')  # 经文介绍
    ver = models.TextField('version', max_length=2048, default='')  # 版本信息
    comment_num = models.IntegerField(default=0)  # 評論數目

    def __str__(self):
        return self.name

    class Meta:
        verbose_name = '經文'
        verbose_name_plural = verbose_name
        ordering = ['name']

经典片段模型

class Article(models.Model):  # 经文段
    column = models.ForeignKey(Column, blank=True, null=True, verbose_name='belong to')
    level = models.IntegerField()  # 层次
    parent = models.IntegerField(blank=True, null=True)  # 父节点
    child = models.IntegerField(blank=True, null=True)  # 子节点
    chapter = models.IntegerField()  # 第几品
    section = models.IntegerField()  # 第几段
    sentence = models.IntegerField()  # 第几句 层次为1,句子为0

    code = models.CharField(max_length=64)  # 编码
    san = models.TextField(max_length=8192, blank=True, null=True)  ## 梵語
    san2 = models.TextField(max_length=8192, blank=True, null=True)  ## 梵语原型
    santag = models.TextField(max_length=8192, blank=True, null=True)  ## 注
    dir = models.TextField(max_length=8192, blank=True, null=True)  ## 现代汉译
    note = models.TextField(max_length=8192, blank=True, null=True)  ## 注
    d = models.TextField(max_length=8192, blank=True, null=True)  ##  一种译文
    k = models.TextField(max_length=8192, blank=True, null=True)  ##  另外一种译文
    dnote = models.TextField(max_length=8192, blank=True, null=True)  ##  翻译的说明
    knote = models.TextField(max_length=8192, blank=True, null=True)  ##  翻译的说明

    def __str__(self):
        return self.code

    class Meta:
        verbose_name = '經文片段'
        verbose_name_plural = verbose_name

评论模型

class Comment(models.Model):
    user = models.ForeignKey('NewUser', null=True)
    article = models.ForeignKey(Column, null=True)
    content = models.TextField()
    pub_date = models.DateTimeField(auto_now_add=True, editable=True)

    def __str__(self):
        return self.content

    class Meta:
        verbose_name = '評論'
        verbose_name_plural = verbose_name

修改model三步走

remember the three-step guide to making model changes:
Change your models (in models.py).
Run python manage.py makemigrations to create migrations for those
changes
Run python manage.py migrate to apply those changes to the database.

看望数据库,表都建立好啊。

sqlite 9

三、Admin

教程:https://docs.djangoproject.com/en/1.11/intro/tutorial02/#introducing-the-django-admin
代码就那两句:

createsuperuser
runserver

开拓“127.0.0.1:8000/admin”
页面会进入登陆页面,输入刚才的用户名和密码,即可进入管理页面:

sqlite 10

界面很团结,enjoy吧~

最后的话

Django是个大而全的框架,其实并不符合小白。Models算是框架的中坚和难点吧。感觉温馨直接在趟坑。
只是!不可能灰心,看看Baker-Miller Pink,平静一下心态,继续趟坑!

先立个flag,那些做完一定好好计算一下django。

参考文献

此外一些django实战项目:
[1] : http://d-roger.com/2016/06/27/hvae/
[2] : http://www.jianshu.com/p/3bf9fb2a7e31

网站地图xml地图