文章目录
- 基础知识
- 创建项目
- 启动项目
- 创建超级用户
- 创建项目
- 构建个人博客网站
- 简单构建
- 开启本地虚拟环境
- 初步创建blog应用
- 常用的模板标签和过滤器
- 注:常用的模板标签
- 注:常用的过滤器
- 模板嵌套
- 全局模板文件夹
- 模板文件设置建议
- 使用css美化页面
- 导航栏
- 页面美化
- css框架协助前端布局
基础知识
创建项目
选择你想放文件的文件夹,cmd进入
activate dj 进入虚拟环境
django-admin startproject 项目名
进入项目名
用pycharm打开你的文件
打开之后就是这个样子的
编写路由
创建一个新的py项目命名为views
启动项目
输入命令python manage.py runserver
然后复制网址,打开浏览器查看
这个时候就代表你的项目创建并启动成功了
下面我们就开启进一步
创建超级用户
创建项目
构建个人博客网站
·明确创建的项目需要什么东西
例如:创建一个网站就需要明确网站的有哪些功能模块
明确每个功能模块是干嘛的。
简单构建
·功能模块≈Django App
开启本地虚拟环境
隔开python项目的运行环境
1.避开多个项目之间python库的冲突
2.完整便捷导出python库的列表
下载包 pip install virtualenv
卸载django并创建虚拟环境
下载成功
这个时候去你的文件夹就可以看到
进入mysite_env
进入虚拟环境
在此虚拟环境下安装django
注:我安装的是2.0版本的 django==2.0
目前的包
退出虚拟环境再次查询有哪些包
初步创建blog应用
进入虚拟环境,创建项目mysite
进入项目,创建appblog
将mysite
文件用编辑器打开(我这里用的pycharm)
在models
中写入两个类
关于博文和博客分类
对数据库进行初始化python manage.py migrate
创建超级管理员python manage.py createsuperuser
将应用添加进入mysite-->mysite-->settings
创建migrations目录python manage.py makemigrations
并更新数据库
这里创建了两个模型一个关联字段
admin
中进行博客的文章显示框架管理
启动服务器python manage.py runserver
复制网址查看http://127.0.0.1:8000/admin
使用刚刚的账号密码登录
登录后就是下面的那个样子的
·可以改成中文显示zh-Hans
在BlogType中添加内容
如果出现以下报错
解决报错
首先将django的版本升级到2.1.7
然后将数据库进行删除
python manage.py makemigrations blog
python manage.py migrate
然后重新创建超级管理员
再python manage.py runserver
然后进行添加
这里就有啦,我这儿添加了三个
然后添加博客文章内容
然后在models
中写入函数
这个时候再刷新查看
就关联过来啦
写一篇随笔
显示就是这个样子
扩展:pip一键导出和安装(以后会用上的)
pip freeze > requirements.txt
pip install -r requirements.txt
常用的模板标签和过滤器
·继续搭建blog
在 blog文件下的views
中导入
from django.shortcuts import render_to_response
用模板页面输出内容响应
需要两个处理方法 def blog_list(request)
:请求对应的变量 是访问博客列表
def blog_detail(request,blog_pk)
: 是显示具体的blog也页面 说明 参数:blog_pk是需要传一个主键
注意这里的两个html文件是还没有写
在blog下面创建templates
然后在templates下面创建上面两个html文件
在blog中新建路由
总路由
然后运行python manage.py runserver
然后对html文件进行了修改
然后在超级管理员中添加一篇博客
添加标签统计使其可以一眼看到有多少条博客
方法一:
方法二:通过处理方法返回
可以发现两种方法可以达到同样的效果,但是也可以发现第一种明显要方便亿点点。所以这里果断选择方法一。
·但是如果我没有博客的话它的显示是不是0呢?
我们马上看一下,于是打开admin删除两篇博客
删除之后可以发现是会显示0篇的(两种方法都会)
这里我们还可以添加一句提示语暂无博客,敬请期待
添加代码如下
实现效果如下:
添加长篇博客查看
可以发现一长段的文本在这里显示的看着非常繁杂
太长了,我们让它只显示前30个字
代码如下
效果如下:
这里就更加简洁美观啦
在页面中添加其他内容(作者…)
显示效果:
使其显示博客类型并使博客类型变成超链接的形式
·添加路由
·添加试图函数
HTML文件
此时,运行查看效果
问题是没有对应的关键字参数
此时运行发现还是有问题
检查发现我们视图函数中的变量名写错了,修改过后运行查看
点击分类之后就跳转到随笔了,因为我这里只添加了三篇随笔,所以显示的就是三篇随笔。
我又添加了一个感悟类型的博客
再次运行点击类型就可以发现类型下面只有同类型的文章
注:常用的模板标签
注:常用的过滤器
模板嵌套
模板的重复的很多
找个方法将重复的加载出来
基本模板文件(三个模板相似的地方)base.html
修改三个html文件(三个都一样,只需要将不同的内容添加进入模板即可)
blog_detial.html
blog_list.html
blogs_with_type.html
仍旧是可以运行的,这里的模板嵌套就完成啦
全局模板文件夹
路径为:settings --> TEMPLATES --> DIRS
在此目录下创建templates
文件
将基础公共文件base.html
迁移到刚刚创建的templates
里面
重启应用
模板文件设置建议
app模板文件-->app
project模板文件-->project
跟着项目走的话放全局
封装的特别好的话app应用只跟app应用有关系就放在app里面就可以
这里我们就将其放在公共模板文件夹中
将三个模板文件重新创建的blog
文件中去
修改views.py
中的路径
这个时候查看网页显示的仍旧没有问题
使用css美化页面
一般的就可以设计成三个部分(可以根据自己的需求来做)
·导航栏
·主体内容
·尾注(可有可无)
导航栏
设计目标
·logo网站名称+导航
添加首页
在mysite
下面创建views.py
文件并写入方法
在公共模板文件夹下面创建首页的html文件
修改app中的路由文件使其点击博客找到博客列表
修改project中的路由文件(总路由)
运行查看效果
页面美化
使用css
查看效果
显示效果
但是注意将HTML与css放在一起后面修改不是很方便
这里将css单独放在一个文件中css代码 --> css文件
,这里的 css文件
、js文件
、图片
统称为静态文件
静态文件就是写好了之后不会有太多变化的
在project下面创建一个静态文件夹static
文件并将刚刚base.html
文件中的css复制过来
settings
中添加路径,使其可以找到你的静态文件
在base.html
文件中引用
运行查看效果
将home.html进行相同操作
实现相同效果
css框架协助前端布局
【对css不太会或者直接不会的】
这里选择的是Bootstrap