博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Django:(博客系统)使用使用mysql数据&创建post/category/tag实体,并同步到数据中...
阅读量:5332 次
发布时间:2019-06-14

本文共 5546 字,大约阅读时间需要 18 分钟。

背景:

之前也读过一些关于django的一些书,看过别人写的一些博客系统。但是总有一种看别人的都会,但自己写不出来的感觉,于是为了加深对django的学习就开始动手学习了。

环境搭建:

环境:使用python2.7(x64)+django1.11.5+mysql5.7.17 win7x64环境下,ide使用pycharm(个人破解版本)

1)新建一个myblog的django项目,同时定一个blog的app,新建成功后,修改myblog工程下settings.py配置(把数据库从默认的sqlite切换到mysql下):

"""   'ENGINE': 'django.db.backends.sqlite3','NAME': os.path.join(BASE_DIR, 'db.sqlite3'),"""DATABASES = {    'default': {        'ENGINE': 'django.db.backends.mysql',  # Add 'postgresql_psycopg2','mysql', 'sqlite3' or 'oracle'        'NAME': 'my_django_blog',  # Your db name, Or path to database file if using sqlite3        'USER': 'root',  # Your db user name, Not used with sqlite3        'PASSWORD': '123456',  # Your db password, Not used with sqlite3        'HOST': '',  # Your db host, set to empty string('') for default for localhost,  Not used with sqlite3        'PORT': '3306',  # Your db port, set to empty string('') for default, Not used with sqlite3    }}

注意:

上边的注视掉的默认配置最好不要包含到DATABASES={}配置项内部,可能会导致错误。

2)mysql安装就跳过,但是需要安装mysql的python驱动:

可以选择三中安装方式:

1) pip install MySQL-python (注意大小写要一致) 

2)在 https://pypi.python.org/pypi/MySQL-python/ 下下载MySQL-python的压缩包 解压到本地MySQL-python-1.2.5,进入到MySQL-python-1.2.5 下,输入:

python setup.py install

3)下载MySQL_python-*.whl安装包,在下载之前先要确定你安装的Python是32位的还是64位的,如果是32位的就下载32位的,如果是64位的就下载64位的。在这里下载:

下载后进入下载文件所在的目录:shift键+鼠标右键-》在“打开的菜单中”找到“在此处打开命令窗口(W)”点击进入cmd窗口,运行:pip install *.whl

备注:

前两种方法我再win7环境下安装python的mysql驱动都失败了(失败信息:building '_mysql' extension   error: INCLUDE environment variable is empty),建议使用第三种。

创建post/category/tag实体,并同步到数据中

关于在django项目中如何使用实体,请参考文章:https://docs.djangoproject.com/en/1.10/topics/db/models/

1)在blog的app下的models.py文件内创建实体:post/category/tag

1 # -*- coding: utf-8 -*- 2 from __future__ import unicode_literals 3 from django.db import models 4 from django.contrib.auth.admin import User 5  6  7 # ''' 8 # 文章栏目(分类)实体 9 # '''10 class Category(models.Model):11     name = models.CharField(max_length=128)  # 文章栏目(分类)名称12 13     def __str__(self):14         return self.name15 16 17 # '''18 # 文章标签实体19 # '''20 class Tag(models.Model):21     name = models.CharField(max_length=128)  # 文章标签名称22 23     def __str__(self):24         return self25 26 27 # """28 # 文章实体29 # """30 class Post(models.Model):31     title = models.CharField(max_length=128)  # 文章标题,定义最大长度为12832     """33     如果不使用blank=True标识,则当该值为空时会保存操作会抛出异常34     """35     summary = models.CharField(max_length=256, blank=True)  # 文章简介,定义最大长度为1256。36     body = models.TextField()  # 文章内容,较长因此定义为TextField37     create_time = models.DateTimeField()  # 文章创建时间38     modify_time = models.DateTimeField()  # 文章修改时间39     views = models.PositiveIntegerField(default=0)  # 文章阅读数量,默认为040     '''41     一篇文章只能归属一个栏目,而一个栏目下可能会拥有多篇文章,因此这是一对多的关联关系。42     关于用法请阅读:https://docs.djangoproject.com/en/1.10/topics/db/models/#relationships43     '''44     category = models.ForeignKey(Category)  # 文章分类45     '''46     一篇文章允许有多个标签,一个标签允许被多篇文章使用,因此他们的关系是多对多关系,但是同时该值可以不设置,因此使用black=True标识该字段允许为空。47     '''48     tags = models.ManyToManyField(Tag, blank=True)  # 文章标签49     '''50     # 由于django.contrib.auth 是 Django 内置的应用,它用于处理网站用户的注册、登录等流程,User 是 Django 为我们已经写好的用户模型。51     #一篇文章对应一个作者,而一个作者可能会写多篇文章,因此这是一对多的关联关系,和 Category 类似。52     '''53     author = models.ForeignKey(User)  # 文章作者54 55     def __str__(self):56         return self.title

2)在“manage.py@myblog”窗口中执行数据同步

执行数据同步的目的是为了新建数据库及定义的实体类对应的数据表的同步。

问题:当执行makemigrations时,提示数据库不存在(django.db.utils.OperationalError: (1049, "Unknown database 'my_django_blog'")),于是手动在mysql数据库中创建了my_django_blog数据库。

之后在执行makemigrations、migrate、createsuperuser一切都正常。

C:\Users\Administrator>mysql -uroot -p123456mysql: [Warning] Using a password on the command line interface can be insecure.Welcome to the MySQL monitor.  Commands end with ; or \g.Your MySQL connection id is 4Server version: 5.7.17 MySQL Community Server (GPL)Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> show databases;+--------------------+| Database           |+--------------------+| information_schema || blogs              || hibernate_01       || hibernate_09       || j2cms-ssh          || my_blog            || my_ssh             || mybatis            || mysql              || performance_schema || sys                |+--------------------+11 rows in set (0.00 sec)mysql> create datebase my_django_blog;ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'datebase my_django_blog' at line 1mysql> create database my_django_blog;Query OK, 1 row affected (0.01 sec)mysql> commit;Query OK, 0 rows affected (0.00 sec)mysql> use my_django_blog;Database changedmysql> show tables;+----------------------------+| Tables_in_my_django_blog   |+----------------------------+| auth_group                 || auth_group_permissions     || auth_permission            || auth_user                  || auth_user_groups           || auth_user_user_permissions || blog_category              || blog_post                  || blog_post_tags             || blog_tag                   || django_admin_log           || django_content_type        || django_migrations          || django_session             |+----------------------------+14 rows in set (0.00 sec)mysql>

 

转载于:https://www.cnblogs.com/yy3b2007com/p/7555078.html

你可能感兴趣的文章
数据持久化时的小bug
查看>>
python tkinter GUI绘制,以及点击更新显示图片
查看>>
SRM 628 DIV2
查看>>
2018-2019-2 20165314『网络对抗技术』Exp5:MSF基础应用
查看>>
2018icpc徐州OnlineA Hard to prepare
查看>>
使用命令创建数据库和表
查看>>
【转】redo与undo
查看>>
wpf样式绑定 行为绑定 事件关联 路由事件实例
查看>>
String类中的equals方法总结(转载)
查看>>
内存地址对齐
查看>>
创新课程管理系统数据库设计心得
查看>>
管道,数据共享,进程池
查看>>
SDUTOJ3754_黑白棋(纯模拟)
查看>>
把word文档中的所有图片导出
查看>>
ubuntu 18.04取消自动锁屏以及设置键盘快捷锁屏
查看>>
arcgis api 4.x for js 结合 Echarts4 实现散点图效果(附源码下载)
查看>>
YTU 2625: B 构造函数和析构函数
查看>>
apache自带压力测试工具ab的使用及解析
查看>>
加固linux
查看>>
Hyper-V虚拟机上安装一个图形界面的Linux系统
查看>>