超基础flask
from flask import Flask, render_template, request
from pymongo import MongoClient
app = Flask(__name__)
@app.route('/home/<int:name>') #定义路由
def hello(name):
return "hello world"+ str(name)
if __name__== "__main__":
app.run(debug=True)
结果如下
或者网址里面可以包括多个变量
from flask import Flask, render_template, request
from pymongo import MongoClient
app = Flask(__name__)
@app.route('/')
def index():
return render_template("index.html") #返回index.html的内容
以下为index.html的内容
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>home page body</h1>
</body>
</html>
在浏览器输入网址以后回车出现如下:这里截图有误应该是homepagebody,可能是截错了
-block的使用
在html里面添加block 的用法可以使得其他index页面直接对block里面的内容进行引用
例如:在base.html里面添加block
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
{% block head %} #block命名为head,是一对,有开始有结束
{%endblock%}
</head>
<body>
{% block body %}
{%endblock%}
</body>
</html>
在index.html里面进行引用
{%extends 'base.html' %}\
<!--#表示继承base.html里面html相关的格式-->
{%block head%}
<title>Home</title>
<!--#网址标题为变为home-->
{%endblock %}
{%block body%}
<h1>home page</h1>
{%endblock %}
在application.py添加变量在html实现
app = Flask(__name__)
all_posts=[
{
'title':'posts1',
'content':'this is the content of post1.lalalala'
},
{
'title':'posts2',
'content':'this is the content of post1.lalalala'
}
] #创建posts字典
在index.html里面显示字典的内容
需要注意python语句在HTML的实现方式
- for循环,{%for%}{%endfor%} 且endfor之间无空格
<title>posts</title>
<!--#网址标题为变为home-->
{%endblock %}
{%block body%}
<h1>All posts</h1>
{%for post in posts %} <!--posts 来自于main.py里面的字典posts-->
<h2>{{post.title }}</h2>
<p>{{post.content}}</p>
{%endfor%}<!--for语句需要进行缩进,在block里面-->
{%endblock %}
显示效果如下:
HTML里面使用ifelse进行判断
HTML需要对变量进行判断是否寻找。if的语法如下
{%block body%}
<h1>All posts</h1>
{%for post in posts %} <!--posts 来自于main.py里面的字典posts-->
<h2>{{post.title }}</h2>
<h3>{{post.author}}</h3>
{% if post.author%}
<h3> by:{{post.author}}</h3>
{% else %}
<h3>by:N/A</h3>
{% endif %}
<p>{{post.content}}</p>
{%endfor%}
{%endblock %}
效果如下:
在html里面如何引用css的样式
css样式如下
body{
font-family:Helvetica;
}
base.html里面的引用如下
<!-- <link rel="stylesheet" href="static/css/main.css"#对CSS进行引用> -->
<link rel="stylesheet" href="{{url_for('static',filename='css/main.css')}}">
这两种引用方式都会起作用,显示效果如下,字体改变
flask 里面创建数据库进行增删改查
这里只显示一部分需要在pycharm里面写的代码,对于数据的插入是需要在终端执行的略过
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///posts.db'
db = SQLAlchemy(app)
class BlogPost(db.Model):
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(100), nullable=False)
content = db.Column(db.Text, nullable=False)
author = db.Column(db.String(20), nullable=False, default='N/A')
date_posted = db.Column(db.DateTime, nullable=False, default=datetime.utcnow) #创建数据库BlogPost
flask里面如何引用boostrap
在base.html页面引入boostrap和JS样式
1.通过查找官网获取相应的样式
https://getbootstrap.com/docs/5.0/examples/navbar-static/#
根据关键词搜索,比如我想要引用其中网页的导航栏,我会输入nav关键词,查找nav相关的样式复制粘贴到base.html里面
同样的在其他html页面的{% block body %}里面直接引用相应的模板bootstrap样式也是可以,如下效果
对于网页部分样式见下篇分享