这里在调整完models的数据结构之后,需要删掉sqlite自动生成的db.sqlite3文件和migrations中自动生成的文件。
具体报错是:No module named 'MySQLdb'。
因为:python3连接MySQL不再使用MySQLdb。而是使用PyMySQL用于连接MySQL数据库。
pip install PyMySQL
然后在工程目录的init.py中填写下面两句话
import pymysql
pymysql.install_as_MySQLdb()
第二步:修改settings.py,配置数据库
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', #主要是这里,将默认的sqlite3改为mysql
'NAME': "testdjango", #数据库的名字
'USER': "root",#数据库用户名
'PASSWORD': "root",#数据库密码
'HOST': "127.0.0.1",数据库地址,默认本机
'PORT': "",数据库端口,默认3306
}
}
在mysql中中文解析我们一定要检查是不是utf-8!
CREATE TABLE `mDjangoApp_heroinfo` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`hname` varchar(20) NOT NULL DEFAULT '',
`hgender` tinyint(1) NOT NULL,
`isDelete` tinyint(1) NOT NULL,
`hcontent` varchar(100) NOT NULL DEFAULT '',
`hBook_id` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `mDjangoApp_heroinfo_hBook_id_efd3c6fa_fk_bookinfo_id` (`hBook_id`),
CONSTRAINT `mDjangoApp_heroinfo_hBook_id_efd3c6fa_fk_bookinfo_id` FOREIGN KEY (`hBook_id`) REFERENCES `bookinfo` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=utf8;
解决办法:
网上很多,但是要注意的是:(只针对mac)
1、my.cnf 的位置:是在最外层的etc中,和usr,home同级
2、my.cnf的读写权限只能是664 而不能是666!
我们修改field之后去更新数据库,我们依然需要执行python manage.py makemigrations命令,去修改我们Django中的数据库格式。但是命令行会提示我们去修复我们的数据库,让我们添加默认的数据。
两对花括号包围的文本(如 {{ person_name }})是变量,意思是“把指定变量的值插入这里”。
一对花括号和百分号包围的文本(如 {% if ordered_warranty %})是模板标签。
标签的定义相当宽泛:只要能让模板系统“做些事”的就是标签。
在端口被占用时,杀死某个端口
sudo lsof -t -i tcp:8000 | xargs kill -9
在我们项目的Django文件下输入如下命令:
python 2.7
$ sudo pip install django-tinymce
python 3
$ sudo pip3 install django-tinymce
配置流程:
INSTALLED_APPS 中添加:``
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 'book.apps.BookConfig', # 我的app
9 'tinymce' # 添加此行
10 ]
在最外层的 urls.py 中添加下面代码,一定*不要*添加到各自应用 apps 下的 urls.py(如果有的话) 中:
1 from django.conf.urls import url, include
2 from django.contrib import admin
3
4 urlpatterns = [
5 url(r'^admin/', admin.site.urls),
6 url(r'^tinymce/', include('tinymce.urls')), # 添加此行
7 ]
这里为了举例,只写了一个字段。
1 # coding:utf-8
2 from django.db import models
3
4 from tinymce.models import HTMLField
5
6 class Content(models.Model):
7 content = HTMLField()
改完 models.py 后,记得做迁移
$ python manage.py makemigrations
$ python manage.py migrate
1) 在 settings.py 文件最后添加:
1 TINYMCE_DEFAULT_CONFIG = {
2 'theme': 'advanced',
3 'width': 600,
4 'height': 400
5 }
注:这里的 width 和 height 只能控制在 admin 中的大小,不能控制在视图中的大小。