为 Django 配置 MySQL驱动

pip install pymysql

先安装 pymysql
然后修改主应用的 __init__.py ,加入如下代码

import pymysql
pymysql.install_as_MySQLdb()

最后,加入数据库配置

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql', #数据库引擎
        'NAME': 'user_im',                       #数据库名
        'USER': 'root',                       #用户名
        'PASSWORD': '',                   #密码
        'HOST': '',                           #数据库主机,默认为localhost
        'PORT': '',                           #数据库端口,MySQL默认为3306
        'OPTIONS': {
            'autocommit': True,
        },
    }
}

解决 VSCode 下 Python 报错 80 字符的问题

其实我也希望遵守 80 字符,但是 Django 官方的配置文件中就存在超过 80 个字符的行,这就没办法了,只好扩大要求。

我的 VSCode 使用的是 Pylint,所以可以通过在编辑器设置中,添加如下代码实现。

"python.linting.pylintArgs": [
        "--max-line-length=100"
    ],

将限制放宽到 100 个字符,不会太影响视觉,也能很好的符合规范。

Django 引入 Simple MDE

我比较喜欢 Django 的一点就是其非常完善的后台,借助这个后台,我可以免去 sideproject 的一大部分开发工作(过去的 sideproject 在后台开发时花费大量的时间,我不会前段真是痛苦)。

作为一个程序员,我自然是更喜欢 markdown 编辑器的,所以我没有在系统中引用 ueditor ,而是选择了 SimpleMDE

安装 Package

执行如下命令安装

pip install django-simplemde

安装完成后,在 INSTALLED_APPS 中添加 simplemde

INSTALLED_APPS = (
    # ...
    'simplemde',
    # ...
)

使用

使用时,只需要在 models 中引用即可

from django.db import models
from simplemde.fields import SimpleMDEField

class Entry(models.Model):
    title = models.CharField(max_length=250, verbose_name=u'Title')
    content = SimpleMDEField(verbose_name=u'mardown content')

配置

使用时,最好是进行一定的配置,这是我的配置,将其粘贴在 settings.py 即可

SIMPLEMDE_OPTIONS = {
    'placeholder': '支持 Markdown 语法',
    'status': False,
    'autosave': {
        'enabled': True
    },
    'hideIcons': ["guide", "heading"],
    'toolbar': False,
    'toolbarTips': Flase,
    'spellChecker':False
}

具体的配置项可以在 https://github.com/sparksuite/simplemde-markdown-editor#configuration 找到

Django Models 参数

我创建model必加的字段


class Category(models.Model):

    pub_date = models.DateTimeField('发布日期',auto_now_add=True)
    update_date = models.DateTimeField('更新日期',auto_now=True)
    sort = models.IntegerField("序号",default=99,help_text="序号越小越靠前")
    def __unicode__(self):
        return self.title
    def __str__(self):
        return self.title    
    class Meta:
        verbose_name = '目录'
        verbose_name_plural = '0-目录'
        ordering = ['sort']  # 按照哪个栏目排序
        get_latest_by = 'pub_date'

创建了新的 Django Project 后需要设置的

  1. 创建 Env
    virtualenv venv
  2. 生成 git 目录
    git init
  3. 加入gitignore
    # Byte-compiled / optimized / DLL files
    __pycache__/
    *.py[cod]
    
    # C extensions
    *.so
    
    # Distribution / packaging
    bin/
    build/
    develop-eggs/
    dist/
    eggs/
    lib/
    lib64/
    parts/
    sdist/
    var/
    venv/
    collectstatic/
    *.egg-info/
    .installed.cfg
    *.egg
    
    # Installer logs
    pip-log.txt
    pip-delete-this-directory.txt
    
    # Unit test / coverage reports
    .tox/
    .coverage
    .cache
    nosetests.xml
    coverage.xml
    
    # Translations
    *.mo
    
    # Mr Developer
    .mr.developer.cfg
    .project
    .pydevproject
    
    # Rope
    .ropeproject
    
    # Django stuff:
    *.log
    *.pot
    
    # Sphinx documentation
    docs/_build/
    
    # editor
    .vscode
    
    # database
    db.sqlite3
  4. 修改中文
    LANGUAGE_CODE = 'zh-hans'
    
    TIME_ZONE = 'Asia/Shanghai'
  5. 设置静态文件目录
    STATIC_ROOT = 'collectstatic'
  6. Database
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql', #数据库引擎
            'NAME': 'user_im',                       #数据库名
            'USER': 'root',                       #用户名
            'PASSWORD': '',                   #密码
            'HOST': '',                           #数据库主机,默认为localhost
            'PORT': '',                           #数据库端口,MySQL默认为3306
            'OPTIONS': {
                'autocommit': True,
            },
        }
    }