1.创建新的虚拟环境
2.在setting设置里面更改语言和时区
3.生成脚本
生成后台超级管理员用户
python manage.py createsuperuser
4.在setting中声明应用
5.创建数据库表
1)Django会自动创建id作为主键
2)设置更新时间
#auto_now对象第一次创建时设置时间 auto_now_add 每次对象更新时更新时间
created_time = models.DateTimeField(auto_now=True)
modified_time = models.DateTimeField(auto_now_add=True)
6.外键关联问题(详细)
#分类:博客 = 1:N
# on_delete=False在Django1.x版本默认是不级联删除的,可以不做设置. Django2.x一定要自 行指定.
category = models.ForeignKey(Category, on_delete=models.CASCADE())
#标签:博客 = N:N
tags = models.ManyToManyField(Tag,blank=True)
7.迁移数据库模型
# 生成迁移文件
$ python manage.py makemigrations
# 根据迁移文件创建数据库表
$ python manage.py migrate
# 输出了经 Django 翻译后的数据库表创建语句,这有助于理解 Django ORM 的工作机制。
$ python manage.py sqlmigrate blog 0001
8.在后台注册创建的数据库模型
# blog/admin.py
from django.contrib import admin
from .models import Post, Category, Tag
admin.site.register(Post)
admin.site.register(Category)
admin.site.register(Tag)
9.定制admin后台,更友好显示
10.前端显示,在项目的urls.py中配置路由信息,项目中的urls.py文件中需添加应用的urls.py信息,当用户执行操作时,通过项目的urls.py找到子应用urls.py中的路由,再通过子应用的路由找到视图函数,返回视图函数的内容
11.把共同的html样式抽象成base.html
12.在setting.py中写静态文件static的路径
Markdown 使用 Pygments 在后台为我们做了很多事。如果你打开博客详情页,找到一段代码段,在浏览器查看这段代码段的 HTML 源代码,可以发现 Pygments的工作原理是把代码切分成一个个单词,然后为这些单词添加 css 样式,不同的词应用不同的样式,这样就实现了代码颜色的区分,即高亮了语法为了让博客文章具有良好的排版,显示更加丰富的格式,我们使用 Markdown 语法来书写我们的博
文。Markdown 是一种 HTML 文本标记语言,只要遵循它约定的语法格式,Markdown 的渲染器就能
够把我们写的文章转换为标准的 HTML 文档,从而让我们的文章呈现更加丰富的格式
1).安装markdown模块
2).浏览器显示一堆html标签,在模板标签中使用safe过滤器即可解除转义
3).代码高亮Pygments
Markdown 使用 Pygments 在后台为我们做了很多事。如果你
打开博客详情页,找到一段代码段,在浏览器查看这段代码段的 HTML 源代码,可以发现 Pygments
的工作原理是把代码切分成一个个单词,然后为这些单词添加 css 样式,不同的词应用不同的样式,这
样就实现了代码颜色的区分,即高亮了语法
我们把超链接的 href 属性设置为 /archives/{{ date.year }}/{{ date.month }}/ 同样可以达到目的跳转页面,但是这种写法是硬编码的。虽然现在 archives 视图函数对应的 URL 模式是这种形式,但是如果哪天这个模式改变了呢?如果使用了硬编码的写法,那你需要把每一处 /archives/{{ date.year }}/{{ date.month }}/ 修改为新的模式。但如果使用了 {% url %} 模板标签,则不用做任何修改。简单来说, 就是Web项目的路由地址变化, 不需要去前端页面进行修改链接地址。便于代码的维护为什么要使用 {% url %} 模板标签呢?
14.Django新技术自定义模板标签(类似于自定义{%static%},{%for I in posts%}{%endfor%})
注意起别名
15.为什么要使用 {% url %} 模板标签?
我们把超链接的 href 属性设置为 /archives/{{ date.year }}/{{ date.month }}/ 同样可以达到
目的跳转页面,但是这种写法是硬编码的。
虽然现在 archives 视图函数对应的 URL 模式是这种形式,但是如果哪天这个模式改变了呢?如果使用
了硬编码的写法,那你需要把每一处 /archives/{{ date.year }}/{{ date.month }}/ 修改为新的
模式。但如果使用了 {% url %} 模板标签,则不用做任何修改。
简单来说, 就是Web项目的路由地址变化, 不需要去前端页面进行修改链接地址。便于代码的维护~
16.项目结束后,生成README.md,以及项目所需安装包requirements.txt