范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

是时候学习Web开发了,1小时用Python开发一个博客系统

  来源:麦叔编程
  作者:麦2叔
  开发一个包含数据库的简单网站系统是Web开发入门的最好方式。
  Flask是Python最热门的两个Web框架之一,是最简单易用,容易上手的框架。
  本系列使用Python的Flask框架开发一个简易的博客系统,共用时约90分钟。整个文章分为3部分,今天是第「2」部分。第3部分本周日发布。❝
  原计划是分成2部分,篇幅有点长,临时改成了3部分。
  ❞
  第1部分的链接:
  是时候学习Web开发了!1小时用Python开发博客系统【1】
  整个文章包括以下内容,第1部分涵盖前5部分,今天包含中间的3部分:安装flask创建项目运行你的第一个网站创建一个像样的网页用样式表美化网页「使用模板和bootstrap」「创建文章数据库」「显示所有的文章」显示一篇文章发布新文章修改文章内容删除文章关于麦叔页面
  今天的文章信息量有点大,所有源代码都可以关注公众号「麦叔编程」,回复「fff」获得链接。
  我们开始吧!上次我们已经创建好了flask程序和一个应用了基本样式的页面:
  一、使用模板和Bootstrap
  我们要继续「美化」页面。
  大部分网站都有很多页面,这些页面都会共用同样的菜单栏。总不能开发没页面的时候都要把菜单栏写一遍吧?
  这里就用到了「模板」的概念,我们创建一个模板,模板包含了菜单等共同的部分,而具体页面只要往模板中填空就行了。
  我们的博客最终的样式是这样的,它包含了「列表」,「新建」,「详情」,「修改」,「关于麦叔」等多个页面。这些页面共用同一个模板。
  1.下载JavaScript和CSS文件
  我们需要用到jquery和bootstrap,先去我的git上下载这几个文件,下载方法:关注麦叔编程,回复210820。
  下载完后分别放在static目录下的css和js目录下。其中js目录需要先创建出来。
  2.在templates目录下创建一个新的文件:base.html                        {% block title %} {% endblock %}                         {% block content %} {% endblock %}                            
  这里面信息量有点大,我来一个个解释:使用url_for方法引入了前面下载的1个css文件和3个js文件。之前我们创建的style.css文件就没用了,可以删除了。在开头部分的{% block title %} {% endblock %}是标题(title)占位符,相当于定义了名为title的变量,后面会被具体内容替换掉。在中间部分的{% block content %} {% endblock %}是网页内容的占位符,相当于定义了名为content的变量,后面会被具体内容替换掉。
  修改index.html中的内容{% extends "base.html"   %}
  {% block content %}
  {% block title %} 欢迎来看麦叔的博客 {% endblock %}
  {% endblock %}第一行extends "base.html"表示我们要使用前面定义的base.html这个模板。要使用这个模板,就要把模板中的两个占位符(两个填空题)给填写好。放在{% block content %}和{% endblock %}中间的所有内容都会填写在content这个占位符中。放在{% block title %}和{% endblock %}中间的内容会填写在title占位符中。注意这里的title变量会被重用。它既是title占位符的内容,也是content占位符的一部分。刷新页面,应该看到如下的效果。如果不是,仔细检查一下哪里是不是漏掉了,或者拼写错误了。这里虽然没有很大的变化,但是我们已经搭建好了模板,以后开发的页面内容都可以重用这个模板,而页面本身会变得很简单。二、创建文章数据库
  博客系统会有很多文章,我们要把这些文章保存到数据库。
  数据库有很多选择,比如MySQL, postgresql,Oracle, sqlite3等。
  我们今天要使用最轻量级的数据库sqlite3,Python自带了这个库,所以不需要额外安装。在blog.py同目录下创建一个文件db.sql,里面是创建数据库表的SQL语句:DROP TABLE IF EXISTS posts;
  CREATE TABLE posts (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  created TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  title TEXT NOT NULL,
  content TEXT NOT NULL
  );首先看看posts表是否存在,如果存在,先删除它。创建一个名为posts的表,其中包含id,title,content以及创建时间(created)等字段。在blog.py同目录下创建文件init_db.py这是一个python代码文件,它连接到sqlite数据库,执行上面的db.sql中的语句,然后再插入两条文章。具体细节见注释:import sqlite3
  # 创建数据库链接
  connection = sqlite3.connect("database.db")
  # 执行db.sql中的SQL语句
  with open("db.sql") as f:
  connection.executescript(f.read())
  # 创建一个执行句柄,用来执行后面的语句
  cur = connection.cursor()
  # 插入两条文章
  cur.execute("INSERT INTO posts (title, content) VALUES (?, ?)",
  ("学习Flask1", "跟麦叔学习flask第一部分")
  )
  cur.execute("INSERT INTO posts (title, content) VALUES (?, ?)",
  ("学习Flask2", "跟麦叔学习flask第二部分")
  )
  # 提交前面的数据操作
  connection.commit()
  # 关闭链接
  connection.close()打开一个命令行,运行init_db.py如果没有报错,就会发现文件夹下多了database.db,这就是数据库文件。三、展示文章列表
  现在数据库里有两篇文章,我们可以使用python从数据库中获取数据,并且展现到网页上。修改blog.py,具体细节见注释import sqlite3 #引入sqlite3
  from flask import Flask, render_template
  app = Flask(__name__)
  # 创建一个函数用来获取数据库链接
  def get_db_connection():
  # 创建数据库链接到database.db文件
  conn = sqlite3.connect("database.db")
  # 设置数据的解析方法,有了这个设置,就可以像字典一样访问每一列数据
  conn.row_factory = sqlite3.Row
  return conn
  @app.route("/")
  def index():
  # 调用上面的函数,获取链接
  conn = get_db_connection()
  # 查询所有数据,放到变量posts中
  posts = conn.execute("SELECT * FROM posts").fetchall()
  conn.close()
  #把查询出来的posts传给网页
  return render_template("index.html", posts=posts)
  @app.route("/about")
  def about():
  return render_template("about.html")修改index.html之前只显示了一个标题,现在要循环blog.py中传过来的posts列表,把每一篇文章显示出来。注意for循环在页面中的写法,和python代码很类似,只不过要用{%和%}包起来。{% extends "base.html" %}
  {% block content %}
  {% block title %} 欢迎来看麦叔的博客 {% endblock %}
  {% for post in posts %}
  {{ post["title"] }}
  {{ post["created"] }}
  {% endfor %}
  {% endblock %}刷新页面,应该可以看到这样的效果:如果不行,仔细对比一下,看看少了什么或者有没有拼写错误。
  今天就到这里了,后面的部分会在本周日发布,到时候也会发视频到bilibili,请保持关注。
  整个文章包括以下内容,第1部分涵盖前5部分,今天包含后面的部分:安装flask创建项目运行你的第一个网站创建一个像样的网页用样式表美化网页使用模板和bootstrap创建文章数据库显示所有的文章「显示一篇文章」「发布新文章」「修改文章内容」「删除文章」「  关于麦叔页面」

住宅在线app住宅在线app是一款专业的房产资讯软件,软件中有非常多的建筑方面的行家,你可以在这里对自己的房屋进行管理,软件中有许多的楼盘信息,你想要买什么样的房子都可以在上面找到,并且有专车接吴晓波庞博,首档国货社交综艺,到底会搞些什么?国货潮起来文蛋蛋近年来,国潮类综艺层出不穷,更有上新了故宫潮流合伙人等节目脱颖而出。今年已临近尾声,还没有出现国潮综艺爆款,我们斗胆预定这个名额,做了一档国潮节目,10月28日起每周四晚22小米11超大杯颜值在线?iQOO7夺红点设计大奖获权威认证今年的3月份,是国内智能手机厂商的新品爆发月,从月初开始已有十余款手机新品陆续发布,其中不乏一些在外观设计上较为突出的产品,比如近期刚刚发布的一加9和小米11Pro就是如此。不过相黑鲨凤鸣TWS耳机动手玩不止于游戏体验的真无线耳机佩戴舒适便于携带的特性是真无线(TWS)耳机相比普通蓝牙耳机的一大优势,真无线耳机似乎已经成为无线耳机产品的主流形态,耳机厂商手机厂商都推出了自己的TWS产品。与此同时,真无线耳机游戏玩家为何不等iPhone13了?iQOO7在这个618强势出圈身为学生党,日常生活中自然是少不了游戏的陪伴,不过,我并不看好那些所谓的游戏手机。虽然这些游戏手机的配置都不低,但论外观设计那真是一个赛一个的丑,直到看到了隔壁室友手中的iQOO7价格不贵且游戏体验不差的手机有没有?iQOOZ3可以了解下转瞬间已至年中七月,随着高考中考的结束,以及各学校暑期的来临,相信不少小伙伴都和我一样开始蠢蠢欲动了。与忙碌的寒假不同,相比之下我个人更喜欢过暑假,虽然室外那炙热的天气不适宜出行,如何才能获得职业电竞人的游戏体验?iQOO7可以了解下因为自己的王者荣耀玩得还算不错,平日中也经常带小伙们开黑上分,不过在最近总有人提醒我大神,你的手机该换了。正像大家所说的一样,我手上的这款手机也确实有点落伍,玩个王者荣耀都不能效果口罩退位,头盔上场,这次你还炒吗?不是我不明白,这世界变化快。口罩概念还没走干净,朋友圈还有人在卖N95,说是海关退回来的,6毛5一个,头盔概念就来了。这头盔就是摩托车手电动车手带的那种,余欢水就是因为带了头盔,所在线下餐馆,花5倍价钱吃了个料理包中午饿了,远远看到一家日式咖喱蛋包饭的店还算清新。进去坐下,店面不大,四张桌子,靠墙一个吧台放点高板凳,非常正常的的小店配置。片刻,饭上来了,颜值不错。味道嘛倒也凑合,土豆胡萝卜都国内首套新能源一次调频性能在线监控与主动评估系统研发成功5月23日,白云电气集团与湖南高创新能源公司湖南省电科院共同研发的风电集群一次调频性能在线监控与主动评估系统示范工程在湖南省湘乡市褒忠山风电场顺利通过验收。该系统是国内首套风电集群大数据学习Linux概念及学习路线大数据学习之路漫长长,其中Linux作为学习大数据技术必不可少的内容之一,我们应该怎样去学习Linux呢?接下来小编将为大家带来Linux的概念以及学习路线。一初识Linux系统1
东风日产的衰落从三缸奇骏开始?我想未必吧?说起日系,不得不提提本田丰田日产,它们可以说是其中的标杆,也同时代表了日系的总体水平。在这里不是说马自达铃木斯巴鲁等品牌不好,而是它们在国内的销量实在是太一般,所以不具备什么代表性国产厨师机的新春天?海氏M5ampampamp凯膳怡mini横评开篇之前过中秋的时候一时兴起就跟朋友相约做了好几种小点心送人,因为制作量比较大一台厨师机也不够用,所以就让朋友搬了她新买的海氏M5一起过来双线并行,用过之后可以说是完全颠覆了我对厨新款飞度实车曝光,搭载1。5L发动机,终于看出本田的诚意说起两厢车,不得不提提大众高尔夫大众Polo本田飞度跟丰田致炫,它们可以说是其中的佼佼者,深受消费者的喜爱。尤其是飞度这款小车,凭着二手车超高的保值率跟强劲的动力俘获了大批粉丝,而推荐几款上班族也能够买得起的豪华车,最低不到14万今天给上班族推荐几款豪华车,最低不到14万,想要面子的话不妨来看看,虽然是紧凑型轿车但绝对让您体验到它们的豪华!话不多说,一起来看看吧!奥迪A3指导价20。3124。97万元优惠幅你买过哪些无聊的东西,最后却发现原来这东西这么香不知道你有没有这种情况有时候在手机电脑屏幕上看到某个弹窗广告挺有意思,然后点进去发现似乎挺好玩儿,于是心里一激动,手上一抖动就买了下来。然而买回来把玩几分钟,接下来这东西可能很长一微观小世界江南XSP02显微镜开箱4月份呢家里的小侄子要过生日了,问他想要什么生日礼物,已经上小学的他今年不要玩具啦,说想要一台显微镜。家里人都觉得没什么用又占地方,但我还记得我小时候哭着喊着想要一台的事,当然是没受够了牙齿炎症疼痛困扰?亲测有效,biclean麻牙系列牙膏不知不觉就过完2020,在年初,耀哥就开始尝试着以视频的方式进行产品的评测体验。老粉们还记得耀哥发布的第一个视频是哪件产品吗?那是我通过众测拿到的松下电动牙刷,原来这位老朋友已经陪六个场景,这辈子都可能不会再遇到?时代在发展,经济和社会形态在变化,我们逐渐看不到这些场景。自从房地产开始暴涨,五年之后,这些场景延续至今已经十五年没见过了,逐年消减的是生命的活路,俗称生活。春天绵绵雾雨中,在老旧钱枫被举报性侵,受害者称两年前就发生了,后面却没下文天天向上主持人钱枫被举报性侵,看到钱枫被举报性侵这消息,我愣住了好久好久,才仔细阅读了一个叫小艺希望坏人被惩罚的微头条,越看越吃惊,原来钱枫涉嫌性侵这事2年前就发生了,问题来了,为我的低频小钢炮,德斐尔挂颈蓝牙耳机分享第一次接触德斐尔Teufel,是通过一老哥介绍的体验其蓝牙音箱产品,HIFI音响般的声场效果深得我心。毕竟是老牌的德国音频企业,还是欧洲第一家音响系统直营商。后来也相继上手了德斐尔外形酷似别克英朗两厢,细节好看得多,售价7。99万起对于有些刚刚踏入职场的年轻人来说,买一款车作为代步工具成为了眼前迫切的需求。但是毕竟初入社会,购车预算一般都不是很高,那么有没有一款价格不贵外观时尚燃油经济性出色配置还不错的车型呢