您好,欢迎来到本期“利用Python Django一步步搭建个人博客”系列的第四部分。在上一篇教程中,我们学习了如何编写URL并将其映射到页面。在我们继续之前,我们需要做的一件事是让我们写的URL具有动态性。我们想要这样做的原因是,确保我们的文件夹或文件位置发生变化,我们的程序不会失效。首先,转到我们创建的blogapp文件夹,然后创建一个名为“urls.py”的新文件。在该文件内,输入以下代码:

转到blog文件夹中的urls.py文件,并按如下所示进行更新:

在blog文件夹的urls.py文件中,我们在第17行从django.conf.urls导入一个名为“include”的模块。然后我们在第22行向它传递一个字符串。这个字符串是我们的blogapp将容纳的所有URL的地址。只要用户发出请求,Django就会搜索该文件的URL。请注意,同一行中的RegEx没有“$”符号。

在blogapp文件夹下的urls.py文件中,我们从views.py文件中导入posts_home函数(第4行)。接下来,我们在url函数中将该函数与RegEx一起调用。还记得blog下的urls.py中我们的RegEx丢失的“$”吗?它现在在这里。这意味着字符串在URL“/ posts /”处停止,就像我们之前做的那样!

现在我们明白了,运行服务器并转到localhost:8000 / posts。我们的页面仍然可以随心所欲地呈现。

在博客中,我们希望能够创建、更新、删除和显示我们拥有的帖子列表。但首先,我们将从显示帖子列表的页面开始,从那里开始构建。对于像我们的博客这样的大型程序,Django有一种更好的方式来呈现称为模板的页面。要开始使用模板,首先,在与blogapp文件夹相同的根目录中创建一个文件夹。

接下来,进入settings.py文件并将其修改为如下所示:

我们在那里做的是告诉Django去哪里寻找我们的模板文件。 目前,我们还没有任何创建。 转到模板文件夹,然后创建一个名为index.html的文件。在其中,添加以下代码:

接下来,进入您的views.py文件并将其修改为如下所示:

从views.py文件开始:我们创建了一个名为“context”的字典,其中包含键值对。接下来,我们调用render方法。 render方法有三个参数,即请求、要呈现的页面和字典。在index.html文件中,我们看到一个奇怪的{{title}}。这是一个传递给我们的HTML文件的变量。这个变量是我们在页面中创建的字典的“键值”对中的“值”。

如果我们转到localhost:8000 / posts /,我们会看到我们的页面正常运行。但它如何知道要呈现什么?views.py文件有一个我们创建的名为“posts_home”的方法。此方法接受请求并返回带有上下文的HTML页面。在我们的urls.py文件中,调用此方法,因此当我们在浏览器中向此URL发出请求时,我们会看到正在返回(呈现)的页面。

就是在Django中使用模板渲染页面。它看起来并不多,但是当我们向数据库添加数据时,我们可以在此页面上显示它。我们可以在Django中使用一个名为Queryset的东西来做到这一点。在开发环境中,键入以下命令:

python manage.py shell

这应该打开一个交互式shell,你可以编写python代码。我们想用数据填充数据库,所以写下面的代码:

>>> from blogapp.models import Post

>>>

这行代码的作用是导入我们的Post数据库,现在我们可以创建数据,删除数据以及我们想要的任何对数据库的操作。要向其添加数据,请运行以下命令:

>>> Post.objects.create(article_title = “My First data”, content=”Content should be up here)

>>>

这行代码的作用是创建一个标题为“My First data”和附带内容的帖子。请使用该命令创建14个帖子(随意更改标题和内容。此外,您可以创建多于或少于14个帖子)。现在,我们的数据库中已经拥有了一部分数据,我们可以查询数据库中的信息。在shell中运行以下命令:

>>> queryset = Post.objects.all()

>>> for obj in queryset:

. . . print obj.article_title

. . . print obj.content

现在我们在数据库中有了数据,我们希望看到它在HTML页面上呈现。为此,我们必须对views.py文件进行一些修改。添加以下代码:

打开index.html文件并对其进行以下修改:

在views.py文件中,我们从models.py导入Post数据库。这使我们能够在第8行查询它并将其附加到我们命名为“queryset”的变量。“Post.objects.all()”命令获取Post数据库中的所有数据并将其附加到queryset变量,然后我们将其作为“key-value”对中的“value”传递给上下文。注意这里的关键是“object_list”。

在index.html文件中,我们执行循环查看来自视图的数据。我们使用“For循环”来获取我们需要在页面上呈现的数据资源。

运行服务器,然后转到localhost:8000 / posts,可以看到我们的所有博客信息。

你到目前为止学到了什么:

1. URL如何工作

2.如何创建模板并在Django中呈现它

3.如何访问数据库并向其中添加数据

4.渲染要查看的数据。

我们该系列的教程到此就结束了,您现在已经能独自搭建自己简单的博客,如果您想学习Django或者python的更多操作,可以继续探索交流。

用python搭建个人博客过程_技术分享|利用Python Django一步步搭建个人博客(四)...相关推荐

  1. python实现oa系统_技术讨论 | 利用Python程序实现某OA系统的自动定位

    前言 本文介绍了笔者通过python程序实现某OA系统自动考勤打卡功能及相关逻辑原理的解析. 声明:本程序仅供Python语言的学习交流用途,笔者不提倡利用程序自动考勤的做法,笔者不对滥用本程序导致的 ...

  2. python r语言 数据分析统计服_【分享】Python和R语言的数据分析/挖掘工具互查

    数极客,拥有16种数据分析模型的新一代用户行为分析平台! 写在前面 在此总结一些在数据分析/挖掘中可能用到的功能,方便大家索引或者从一种语言迁移到另一种.当然,这篇博客还会随时更新(不会另起一篇,为了 ...

  3. 基于python的搜索引擎论文_技术分享 - 基于python构建搜索引擎系列——(四)检索模型...

    构建好倒排索引之后,就可以开始检索了. 检索模型有很多,比如向量空间模型.概率模型.语言模型等.其中最有名的.检索效果最好的是基于概率的BM25模型. 给定一个查询Q和一篇文档d,d对Q的BM25得分 ...

  4. python可以做计量分析吗_技术分享 - python数据分析(2)——数据特征分析(上)...

    1 分布分析 分布分析能揭示数据的分布特征和分布类型.对于定量数据,欲了解其分布形式是对称的还是非对称的,发现某些特大或特小的可疑值,可通过绘制频率分布表.绘制频率分布直方图.绘制茎叶图进行直观地分析 ...

  5. python个人博客搭建说明书_技术分享|利用Python Django一步步搭建个人博客(二)...

    原标题:技术分享|利用Python Django一步步搭建个人博客(二) Hello,欢迎来到我们的"利用Python Django一步步搭建个人博客"系列的第二部分.在第一部分中 ...

  6. 小猿圈分享利用python网络爬虫获取网易云歌词

    今天小猿圈给大家分享网易云音乐歌词爬取方法. 本文的总体思路如下: 找到正确的URL,获取源码: 利用bs4解析源码,获取歌曲名和歌曲ID: 调用网易云歌曲API,获取歌词: 将歌词写入文件,并存入本 ...

  7. 用python搭建个人博客过程_手把手搭建个人博客(图文教程)

    搭建个人博客 浏览体验更棒请移步原文:手把手搭建个人博客 首先我们谈一谈搭建个人博客必要性,个人认为在学习过程中,被动接受知识对你的提高是轻微的.比如你看网课学习,在听老师讲解的时候感觉简单易懂,代码 ...

  8. python做三维图片挑战眼力_这几天有django和python做了一个多用户博客系统(可选择模板) 没完成,先分享下...

    最新请看这里:http://my.oschina.net/djangochina/blog/140099 断断续续2周时间吧,用django做了一个多用户博客系统,现在还没有做完,做分享下 做的时候房 ...

  9. java 调用python脚本过程_通过Java调用Python脚本

    在进行开发的过程中,偶尔会遇到需要使用Java调用Python脚本的时候,毕竟Python在诸如爬虫,以及科学计算等方面具有天然的优势.最近在工作中遇到需要在Java程序中调用已经写好的Python程 ...

最新文章

  1. 友情链接优化的技巧分享
  2. 检测IIS应用程序池对象 回收
  3. AAAI 2022 | 全身涂装式对抗纹理迷彩生成框架FCA
  4. php判断几维数组的方法,php如何判断数组是几维
  5. 布局 —— 左侧固定,右侧自适应
  6. JDK1.8版本,java并发框架支持锁包括
  7. AOJ0118 Property Distribution【DFS】
  8. java多线程按行读取文件_“java”中多线程按行读取txt且每个线程读的内容不能重复,这么求“demo”?...
  9. 关于企业软件资质申请流程以及时间规划(二)——软件登记测试
  10. 大数据框架Storm的介绍
  11. postman下载安装和基础使用教程(官网)
  12. 谷歌AI版“你画我猜”刷屏朋友圈,背后是这样的原理!
  13. IT行业常见职位英语缩写及中文释义
  14. 1582年10月份日历表_1582年10月发生了什么 日历为什么凭空少了十天
  15. 一维卷积神经网络在近红外光谱分析中的应用
  16. 关于调制解调器、路由器、交换机
  17. 按头安利 好看又实用的SolidEdge 3d模型素材看这里
  18. JAVA中的arraylist集合,Java ArrayList集合
  19. 时钟程序设计java_Java数字时钟实现代码详解
  20. 国产处理器服务器操作系统安装(海之舟服务器操作系统安装说明)

热门文章

  1. 在状态栏中插入类似进度条的可视控件
  2. 充分发挥bpl包的作用
  3. TADOStoredProc返回多个数据集
  4. 在stringgrid的drawcell事件处理过程中,给单元格赋值时,要用textout输出,不要像一般给cell[i,j]赋值那样。
  5. 快速融入新团队的一点个人体会
  6. 嵌入式FreeRTOS系统,在中断中调用FreeRTOS系统的API函数
  7. python保存几位小数 format
  8. Java中字符串和数字间转换
  9. MyBatis-Plus 高级功能 —— 乐观锁插件
  10. Darknet_Yolov4实战(二)_安装OpenCV