Django搭建博客-搭建开发环境

1、安装并检测python是否正常运行,在命令行输入 python -V ,如果输出了 Python 的版本号,说明 Python 已安装成功。

2、使用虚拟环境 Virtualenv
  强烈推荐在 Virtualenv 下进行 Django 的开发。Virtualenv 是一个 Python 工具,使用它可以创建一个独立的 Python 环境

  为什么要使用 Virtualenv 呢?举个例子,假设你已经在系统中安装了 Python,并且在阅读此教程前你已经进行过一些 Django 的学习,但那时候安装的 Django 还是 1.8 版本。我们教程使用的是最新版的 Django 1.10.6 版本,你可能不愿意删除掉旧版的 Django 1.8,因为那可能导致你以前的项目无法运行。既想让原本项目在 Django 1.8 环境下运行,又想再安装 Django 1.10.6 来开启本教程的项目,怎么办呢?使用 Virtualenv 就能够完美解决这个问题。

  Virtualenv 帮我们从系统的 Python 环境中克隆一个全新的 Python 环境出来,这个环境独立于原来的 Python 环境。我们可以在这个新克隆的环境下安装 Django 1.10.6,并且在这个新环境下运行我们的新项目。

  Virtualenv 的使用非常简单,首先安装 Virtualenv,打开命令行工具,输入 pip install virtualenv 命令即可安装 Virtualenv。

  C:\WINDOWS\system32>pip install virtualenv

  安装成功后就可以开始创建虚拟环境,指定一个你喜欢的目录,Virtualenv 会把这个新的虚拟环境装到你指定目录下。比如新建文件夹envs-blogproject_env,然后运行:

  C:\Windows\System32>virtualenv C:\Users\HDU-rib\Desktop\python\envs\blogproject_env

  虚拟环境已经创建好了,我们需要激活这个环境,运行 blogproject_env\Scripts\ 目录下的 activate 程序激活它:

  C:\Windows\System32>C:\Users\HDU-rib\Desktop\python\envs\blogproject_env\Scripts\activate

  可以看到命令提示符前面多了 (blogproject_env),说明我们已经成功激活了虚拟环境,接下来就可以开始安装 Django 了。

 3、安装 Django

(blogproject_env) C:\WINDOWS\system32>pip install django==2.0.3

查看Django版本:

3、新建工程

跳出python,新建django工程:

然后使用pycharm打开工程文件,配置好环境运行:

参考:https://my.oschina.net/hevakelcj/blog/384070

 

 修改时区和语言:

1 # LANGUAGE_CODE = 'en-us'2 # TIME_ZONE = 'zh-hans'
3 LANGUAGE_CODE = 'zh-hans'
4 TIME_ZONE = 'Asia/Shanghai'

 运行:

  python manage.py startapp blog

 然后在setting.py中进行一些配置。

4、创建 Django 博客的数据库模型

  博客的文章应该含有标题、正文、作者、发表时间等数据。一个更加现代化的博客文章还希望它有分类、标签、评论等。为了更好地存储这些数据,我们需要合理地组织数据库的表结构。

  我们的博客初级版本主要包含博客文章,文章会有分类以及标签。一篇文章只能有一个分类,但可以打上很多标签。

  数据库存储的数据其实就是表格的形式,例如存储博客文章的数据库表长这个样子:     

文章 id标题正文发表时间分类标签
1 title 1 text 1 2016-12-23 Django Django 学习
2 title 2 text 2 2016-12-24 Django Django 学习
3 title 3 text 3 2016-12-26 Python Python 学习

  其中文章 ID 是一个数字,唯一对应着一篇文章。当然还可以有更多的列以存储更多相关数据,这只是一个最基本的示例。

  数据库表设计成这样其实已经可以了,但是稍微分析一下我们就会发现一个问题,这 3 篇文章的分类和标签都是相同的,这会产生很多重复数据,当数据量很大时就浪费了存储空间。

  不同的文章可能它们对应的分类或者标签是相同的,所以我们把分类和标签提取出来,做成单独的数据库表,再把文章和分类、标签关联起来。下面分别是分类和标签的数据库表:

分类 id分类名
1 Django
2 Python

 

标签 id标签名
1 Django 学习
2 Python 学习

 1 from django.db import models
 2 from django.contrib.auth.models import User
 3 # Create your models here.
 4 
 5 class Category(models.Model):
 6     """
 7     Django 要求模型必须继承 models.Model 类。
 8     Category 只需要一个简单的分类名 name 就可以了。
 9     CharField 指定了分类名 name 的数据类型,CharField 是字符型,
10     CharField 的 max_length 参数指定其最大长度,超过这个长度的分类名就不能被存入数据库。
11     当然 Django 还为我们提供了多种其它的数据类型,如日期时间类型 DateTimeField、整数类型 IntegerField 等等。
12     """
13     name = models.CharField(max_length=100)
14 
15 class Tag(models.Model):
16     name = models.CharField(max_length=100)
17 
18 class Post(models.Model):
19     # 文章标题
20     title = models.CharField(max_length=70)
21 
22     # 文章正文,我们使用了 TextField。
23     # 存储比较短的字符串可以使用 CharField,但对于文章的正文来说可能会是一大段文本,因此使用 TextField 来存储大段文本。
24     body = models.TextField()
25 
26     # 这两个列分别表示文章的创建时间和最后一次修改时间,存储时间的字段用 DateTimeField 类型。
27     created_time = models.DateTimeField()
28     modified_time = models.DateTimeField()
29 
30     # 文章摘要,可以没有文章摘要,但默认情况下 CharField 要求我们必须存入数据,否则就会报错。
31     # 指定 CharField 的 blank=True 参数值后就可以允许空值了。
32     excerpt = models.CharField(max_length=200, blank=True)
33 
34     # 这是分类与标签,分类与标签的模型我们已经定义在上面。
35     # 我们在这里把文章对应的数据库表和分类、标签对应的数据库表关联了起来,但是关联形式稍微有点不同。
36     # 我们规定一篇文章只能对应一个分类,但是一个分类下可以有多篇文章,所以我们使用的是 ForeignKey,即一对多的关联关系。
37     # 而对于标签来说,一篇文章可以有多个标签,同一个标签下也可能有多篇文章,所以我们使用 ManyToManyField,表明这是多对多的关联关系。
38     # 同时我们规定文章可以没有标签,因此为标签 tags 指定了 blank=True。
39     # 如果你对 ForeignKey、ManyToManyField 不了解,请看教程中的解释,亦可参考官方文档:
40     # https://docs.djangoproject.com/en/1.10/topics/db/models/#relationships
41     category = models.ForeignKey(Category)
42     tags = models.ManyToManyField(Tag, blank=True)
43 
44     # 文章作者,这里 User 是从 django.contrib.auth.models 导入的。
45     # django.contrib.auth 是 Django 内置的应用,专门用于处理网站用户的注册、登录等流程,User 是 Django 为我们已经写好的用户模型。
46     # 这里我们通过 ForeignKey 把文章和 User 关联了起来。
47     # 因为我们规定一篇文章只能有一个作者,而一个作者可能会写多篇文章,因此这是一对多的关联关系,和 Category 类似。
48     author = models.ForeignKey(User)
View Code

 详细解释看:https://www.zmrenwu.com/post/5/

 然后需要在setting中设置数据库,安装连接mysql的相关软件,这里安装mysqlclient。

在创建外键的时候遇到报错:
TypeError: __init__() missing 1 required positional argument: 'on_delete'
查询一番后发现Django2.0版本创建外键时需要在后面加上on_delete

category = models.ForeignKey(Category,on_delete=None)

分别运行 python manage.py makemigrations 和 python manage.py migrate 命令:

 

posted @ 2018-03-31 13:16  ribribrib2  阅读(104)  评论(0编辑  收藏  举报