专栏首页机器学习算法与Python学习给Python初学者:如何用 Django 写一个36Kr

给Python初学者:如何用 Django 写一个36Kr

关键字全网搜索最新排名

【机器学习算法】:排名第一

【机器学习】:排名第二

【Python】:排名第三

【算法】:排名第四

首先需要说明一下,这篇教程是写给初学者的,这里不会有高深的概念、大段难懂的代码,这篇教程的目标是让你读懂每一句话,明白关键步骤背后的核心原理。

接下来,我会带着你理解 Django 最核心的 MTV 原理,并且用「36Kr」这个实战案例来帮助你理解,带着你走一遍实现这个项目的关键步骤。

如果你已经把 Django 玩的非常6了,那么这篇教程不适合你。如果你还是一个困惑的初学者,看 Django 文档看的头痛,来吧,我们开始。

第一步

理解 Django 的 MTV 模式

我们在浏览器里输入36Kr的网址,然后看到网页呈现出来,这短短的几秒钟就已经把 MTV 的流程运作完毕。那么究竟是怎么运作的呢?

首先是 Model 层:

每个网站都是有数据库的,Django的 Model 层就像是数据库的代理人,我们用 Model 来操作数据库的增删改查,这样就不用单独操作数据库了。

对于36K来说,数据库里面最主要的是文章信息,我们通过 Model 这个数据库代理人来操作文章数据。

然后是 Template 层:

模板层负责把 Model层取出来的数据填充进网页,变成我们看到的成型的网页。这个过程我们称之为渲染。

对于36K来说,Model 层渲染的过程就是把文章数据变成可以浏览的、排版优雅的网页的过程。

然后是 View 层:

View 层负责的是把渲染好的网页返回给使用者,让我们在浏览器里面可以看见。

对于36K来说,View 层就是把网页返回给我们,让我们在浏览器里面能看到。

还有个 Url 是 View 的小弟:

我们访问 url 的时候,url 会对应的找到处理这个流程的 view。

对于36Kr来说,我们访问 http://36kr.com/ 这个网址的时候,就会对应的找到首页的 view.

第二步

用 Semantic UI 写一个页面

手写 CSS 是一件很麻烦的事情,在这里推荐你使用一个 CSS 框架:Semantic UI,这个框架比起 Bootstrap 来,使用起来更加语义化,更容易上手,也更好看。

打开 Semantic UI 的文档,我们就会发现许多和 36kr 里类似的组件,把这些组件整合拼装起来,就可以做出一个页面。

具体怎样用 html 和 Semantic UI 写出这样一个网页模板,并不是这篇文章的重点,这篇文章还是着重讲 Django 的实现思路。

只需要花上30分钟跟着我们的课程学习,你就能写出这样一个页面了,接下来我们需要把这个页面转换成模板 Template。那我们先继续往下来。

第三步

Django 的准备工作

创建一个 Django 项目,需要做一系列的步骤,我们总结了一下,是这样7个步骤:

可能你会觉得有点麻烦,但这里面并没有什么难理解的地方,只需要跟着一步步做就行了。

考虑到你现在正在用手机阅读,也没办法拿着电脑跟着一步步操作,这里只是简单的列出来核心的步骤。

第四步

用模板语言实现首页文章动态

我们之前写出来的页面是静态的,内容都是写死在页面上的。但是36K这样的资讯网站,每天要发布很多新文章信息,这些文章需要从数据库中取,这就需要用到模板变量。

什么是模板变量呢?它有点像是一个占位符,我们先给那些会变化的数据预留出来位置,Django 就会帮我们填好相应的内容。

所以我们需要把每一处会变化的数据,都用模板变量的方式来替换,写法都是类似这样:{{ Title }}

Title 需要替换成你想替换掉的数据。

OK,读到这里,你就已经掌握了「如何用 Django 写一个36K」的最关键知识了。希望通过这篇文章,让你了解到创建一个 Django 项目的关键步骤,并且理解最主要的运作模式,而不是被一大堆的代码和细节搞晕。

文章的篇幅有限,很多细节没能在这展开说,如果你有兴趣学会从头到尾做出来一个 Django 项目,可以去找到一些线上教程跟着一步步学习。

事实上,作为 Python 初学者,你可能会面临这些问题:

我应该学 Python Web 么? 应该选哪个 Python Web 框架?Django, Flask, Tornado 分别有什么优劣? 做一名 Python Web 工程师的体验是怎样的? 该学哪些知识?怎么上手学习,怎么找练手项目?

本周日,我们邀请了Python全栈工程师胡布老师,与大家分享《如何高效入门Python Web》。希望这次的直播,能帮想要了解 Python Web 的同学少走弯路。

本文分享自微信公众号 - 机器学习算法与Python学习(guodongwei1991)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-06-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 26 个鲜为人知的 Python 技巧,成为真正的Pyer!

    人们还经常把 Python 笑称为「可执行伪码(executable pseudocode)」。但是,当你可以编写这样的代码时,很难去反驳这种言论:

    昱良
  • Python 官方推荐的一款打包工具

    https://blog.csdn.net/dream_allday/article/details/60467131

    昱良
  • Python有哪些实现方式你知道吗?

    当谈到Python时,一般指的是CPython。但Python实际上是一门语言规范,只是定义了Python这门语言应该具备哪些语言要素,应当能完成什么样的任务。...

    昱良
  • 你信任的公司正在窃取你的信息

    通常来讲,“购买新产品” 指的是这样的交易过程:购买食物时,可以先确认食材然后购买它,即使难吃也不会要了你的命;购买汽车时,首先它得符合所有安全标准;为特定目的...

    登木望月
  • php读取和保存base64编码的图片内容

    lilugirl
  • Spring AOP 中切入点 Pointcut中Expression表达式解析及配置

    标准的Aspectj Aop的pointcut的表达式类型是很丰富的,但是Spring Aop只支持其中的9种,外加Spring Aop自己扩充的一种一共是10...

    浩Coding
  • 基于OpenCV的区域分割、轮廓检测和阈值处理

    OpenCV是一个巨大的开源库,广泛用于计算机视觉,人工智能和图像处理领域。它在现实世界中的典型应用是人脸识别,物体检测,人类活动识别,物体跟踪等。

    小白学视觉
  • 类的层次结构设计

    在写程序时,我们会经常遇到如上图所示的一种情形——深层调用,ClassD1和ClassD2需要调用ClassA关联的ClassX、ClassY和ClassZ等,...

    一见
  • 如何使用Sentry管理Hive外部表权限

    使用如下命令在HDFS的根目录下创建Hive外部表的数据目录/extwarehouse

    Fayson
  • nlp自然语言处理中句子相似度计算

    在做自然语言处理的过程中,现在智能对话比较火,例如智能客服,智能家电,智能音箱等,我们需要获取用户说话的意图,方便做出正确的回答,这里面就涉及到句子相似度计算的...

    Python疯子

扫码关注云+社区

领取腾讯云代金券