博客主页面开发(完善博客)
博客页面设计
1、页面概要
博客主页面、博客文章内容页面、博客撰写页面;
2、博客主页面
文章标题列表,超链接;
发表博客按钮(超链接);
1> 列表编写思路
取出数据库中所有文章对象;
将文章对象们打包成列表,传递到前端;
前端页面把文章以标题超链接的形式逐个列出;
2> 模板 For 循环
{% for xx in xxs %}
HTML语句
{% endfor %}
3> 具体操作
<1>、后台代码:
<2>、前端代码:
<3>、刷新页面:
出错:
原因及解决办法:
正确显示:
3、博客文章页面
1> 页面内容
标题、文章内容、修改文章按钮(超链接);
2> 具体操作步骤
<1>、views.py
在 views.py 里创建一个响应函数;
在函数里创建一个对象,获取article的id;
将获取的对象渲染到模板里;
<2>、templates
在 templates 下的 blog 文件中创建一个新的 HTML ;
将新设的前端页面路径写到 views.py 里的响应函数内;
撰写前端页面;
urls.py 里面配置对应的 url ;
<3>、根据配置的 url 进入相应的页面
易出错误
(1)、url 网址 写错,忘写 blog,直接写了 article:
(2)、没有编辑文章 3
<4>、注意事项
重点:URL 传递参数;
参数写在响应函数中 request 后,可以有默认值;
URL 正则表达式:r’ ^/article/(?P<article_id>[0-9]+)/$’ ;
URL 正则表达式中的组名必须和参数名一致;
4、Django 模板中的超链接配置
把博客主页面里的链接给补全;
1> 超链接目标地址
href 后面是目标地址;
template 中可以用 " {% url ‘app_name:url_name’ param %} " ;
(url 作为关键字,app_name:应用的命名空间的名称,url_name:链接名, param:地址的参数)
其中 app_name 和 url_name 都在 url 中配置;
2> 在配 URL
URL 函数的名称参数
根 urls,写在 include() 的第二个参数位置,namespace = ‘blog’ ;
应用下则写在 url() 第三个参数位置,name = ‘article’ ;
主要取决于是否使用 include 引用了另一个 url 配置文件;
3> 具体操作
<1>、找到根(即myblog)的 urls.py ,添加第二个参数;
<2>、找到 blog 应用下的 urls.py,在 article 的 url 函数里添加第三个参数;
<3>、修改 HTML 页面 index;
<4> 刷新页面
(1)、运行出错:
(2)、错误原因:
Django 版本的原因(2.0以后的版本)
(3)、解决方案:
第一种:
在myblog 中的 urls.py 的 关于blog的 url 中的第一个参数添加一个变量 ‘blog’ ;
第二种:
用 path 编辑 url,且要添加变量;
(4)、成功后的页面
5、博客撰写页面开发
1> 页面内容(用表单)
标题编辑栏;
文章内容编辑区域;
提交按钮;
2> 具体操作步骤
<1>、前端:在 blog 建立一个 html 文件 edit_page;
<2>、编写两个响应函数,并添加url;
第一:编辑 edit_page 页面的响应函数,并添加 url;
第二:完成表单提交的响应方式
编辑响应函数:
使用 request.POST[ ‘参数名’ ] 获取表单数据;
models.Article.objects.create(title, content)创建对象;
涉及 POST 方法提交表单的,前端页面要加上 {% csrf_token %}
(1)、编写响应函数
(2)、添加url
(3)、将action的url补充完整
<3>、出错(安全性错误)
错误一:
(1)、错误:
(2)、原因及改正
错误二:
(1)、错误:
(2)、错误原因及改正
如果通过 post 来提交表单,必须在前端页面里添加一行代码;
(3)、正确:
<4>、补全“新文章”的链接
点击“新文章”,会跳转到新文章的编辑页面:
3> 编辑修改文章页面
<1>、两个编辑页面对比:
新文章为空,修改文章有内容;
修改文章页面有文章对象;
文章的 ID;
<2>、具体操作步骤
(1)、修改响应函数,给响应函数 edit_page 添加参数 article_id(在根 myblog 内的 views.py 进行操作);
(2)、在 urls 加一个 article_id 的参数(在 blog 内的 urls.py 内操作);
(3)、修改前端页面上的代码(在 blog 内的 article_page.html 和 主页 index.html 内操作);
第一:添加 “修改文章” 的 url;
第二:在主页的新建文章传一个 0;
第三:目前成果:
一、
二、
(4)、继续修改编辑页面:
第一步:在 edit_page.htlm 内添加一个判断;
刷新后的编辑页面:
第二步:
前端:把 article 的 id 放在一个隐藏的 input 标签的 value 里;
后台:在 views.py 的 edit_action 响应函数里获取 id;
其中修改数据(赋值操作);
先:article.title = title
后:article.save()
所以针对数据的操作都是针对对象的操作;
(5)、验证页面
第一:测试修改文章
第二:测试编写新文章
补充
补:格式化代码小技巧
第一种:先点击 Code 再点击 Reformat Code;
第二种:Ctrl + Alt +L;
缺点是易与其他快捷键冲突,尤其是QQ快捷键,不过可以自己修改一下;
补:Pycharm 汉化方法
(1)、下载汉化 jar 包,解压
(2)、将其放在你安装的pycharm 的 lib 目录文件内;
(3)、重启你的pycharm即可;