python基础学习——利用Flask实现一个简单博客
2018-01-18 12:37
1176 查看
数据库的设计
1,pythonweb.py
import pymysql
from flask import Flask, request, session, g, redirect, url_for, abort, render_template, flash
app = Flask(__name__)
app.config['SECRET_KEY'] = '123456'
#显示视图
@app.route('/')
def show_entries():
cursor = conn.cursor()
sql = "select title,text from entries order by id desc "
cursor.execute(sql)
entries = [dict(title=row[0],text=row[1]) for row in cursor.fetchall()]
return render_template('show_entries.html',entries=entries)
#添加视图
@app.route('/add',methods=['POST'])
def add_entry():
if session["logged_in"] ==True:
cursor = conn.cursor()
sql = "insert into entries(title,text) values('%s','%s')" % (request.form['title'],request.form['text'])
cursor.execute(sql)
conn.commit()
flash('New entry was successful posted')
return redirect(url_for('show_entries'))
else:
flash('You are not login !')
return redirect(url_for('login'))
@app.route('/login1')
def login1():
return render_template("login.html")
#登陆与注销
@app.route('/login',methods=['post'])
def login():
cursor = conn.cursor()
sql = "select * from user where username='%s' and password = '%s' "%(request.form['username'], request.form['password'])
cursor.execute(sql)
rs = cursor.fetchall()
if len(rs)!=1:
error = 'Invalid username and password'
return render_template('login.html', error=error)
else:
session["logged_in"] =True
flash('You are logged in')
return redirect(url_for('show_entries'))
@app.route('/logout')
def logout():
session['logged_in']=False
flash('You are logged out')
return redirect(url_for('show_entries'))
conn = pymysql.Connect(
host = '********',
port = 3306,
user = 'root',
passwd = '**********',
db = 'python'
)
if __name__=='__main__':
app.run(debug =True)2,layout.html
<!DOCTYPE html>
<title>Flaskr</title>
<link rel=stylesheet type=text/css href="{{ url_for('static', filename='style.css') }}">
<div class=page>
<h1>Flaskr</h1>
<div class=metanav>
{% if not session.logged_in %}
<a href="{{ url_for('login1') }}">log in</a>
{% else %}
<a href="{{ url_for('logout') }}" >log out</a>
{% endif %}
</div>
{% for message in get_flashed_messages() %}
<div class=flash>{{ message }}</div>
{% endfor %}
{% block body %}{% endblock %}
</div>
3,login.html
<!DOCTYPE html>
{% extends "layout.html" %}
{% block body %}
<h2>Login</h2>
{% if error %}<p class=error><strong>Error:</strong> {{ error }}{% endif %}
<form action="{{ url_for('login') }}" method="post">
<dl>
<dt>Username:
<dd><input type=text name=username>
<dt>Password:
<dd><input type=password name=password>
<dd><input type=submit value=Login>
</dl>
</form>
{% endblock %}
4,show_entries.html
<!DOCTYPE html>
{% extends "layout.html" %}
{% block body %}
{% if session.logged_in %}
<form action=" {{url_for('add_entry')}} " method="post" class=add-entry>
<dl>
<dt>Title:
<dd><input type=text size=30 name=title>
<dt>Text:
<dd><textarea name=text rows=5 cols=40></textarea>
<dd><input type=submit value=Share>
</dl>
</form>
{% endif %}
<ul class=entries>
{% for entry in entries %}
<li><h2>{{ entry.get('title') }}</h2>{{ entry.get('text') }}
{% else %}
<li><em>Unbelievable. No entries here so far</em>
{% endfor %}
</ul>
{% endblock %}
1,pythonweb.py
import pymysql
from flask import Flask, request, session, g, redirect, url_for, abort, render_template, flash
app = Flask(__name__)
app.config['SECRET_KEY'] = '123456'
#显示视图
@app.route('/')
def show_entries():
cursor = conn.cursor()
sql = "select title,text from entries order by id desc "
cursor.execute(sql)
entries = [dict(title=row[0],text=row[1]) for row in cursor.fetchall()]
return render_template('show_entries.html',entries=entries)
#添加视图
@app.route('/add',methods=['POST'])
def add_entry():
if session["logged_in"] ==True:
cursor = conn.cursor()
sql = "insert into entries(title,text) values('%s','%s')" % (request.form['title'],request.form['text'])
cursor.execute(sql)
conn.commit()
flash('New entry was successful posted')
return redirect(url_for('show_entries'))
else:
flash('You are not login !')
return redirect(url_for('login'))
@app.route('/login1')
def login1():
return render_template("login.html")
#登陆与注销
@app.route('/login',methods=['post'])
def login():
cursor = conn.cursor()
sql = "select * from user where username='%s' and password = '%s' "%(request.form['username'], request.form['password'])
cursor.execute(sql)
rs = cursor.fetchall()
if len(rs)!=1:
error = 'Invalid username and password'
return render_template('login.html', error=error)
else:
session["logged_in"] =True
flash('You are logged in')
return redirect(url_for('show_entries'))
@app.route('/logout')
def logout():
session['logged_in']=False
flash('You are logged out')
return redirect(url_for('show_entries'))
conn = pymysql.Connect(
host = '********',
port = 3306,
user = 'root',
passwd = '**********',
db = 'python'
)
if __name__=='__main__':
app.run(debug =True)2,layout.html
<!DOCTYPE html>
<title>Flaskr</title>
<link rel=stylesheet type=text/css href="{{ url_for('static', filename='style.css') }}">
<div class=page>
<h1>Flaskr</h1>
<div class=metanav>
{% if not session.logged_in %}
<a href="{{ url_for('login1') }}">log in</a>
{% else %}
<a href="{{ url_for('logout') }}" >log out</a>
{% endif %}
</div>
{% for message in get_flashed_messages() %}
<div class=flash>{{ message }}</div>
{% endfor %}
{% block body %}{% endblock %}
</div>
3,login.html
<!DOCTYPE html>
{% extends "layout.html" %}
{% block body %}
<h2>Login</h2>
{% if error %}<p class=error><strong>Error:</strong> {{ error }}{% endif %}
<form action="{{ url_for('login') }}" method="post">
<dl>
<dt>Username:
<dd><input type=text name=username>
<dt>Password:
<dd><input type=password name=password>
<dd><input type=submit value=Login>
</dl>
</form>
{% endblock %}
4,show_entries.html
<!DOCTYPE html>
{% extends "layout.html" %}
{% block body %}
{% if session.logged_in %}
<form action=" {{url_for('add_entry')}} " method="post" class=add-entry>
<dl>
<dt>Title:
<dd><input type=text size=30 name=title>
<dt>Text:
<dd><textarea name=text rows=5 cols=40></textarea>
<dd><input type=submit value=Share>
</dl>
</form>
{% endif %}
<ul class=entries>
{% for entry in entries %}
<li><h2>{{ entry.get('title') }}</h2>{{ entry.get('text') }}
{% else %}
<li><em>Unbelievable. No entries here so far</em>
{% endfor %}
</ul>
{% endblock %}
相关文章推荐
- Python web入门:Django学习与实践二(简单页面实现和创建一个模板)
- 利用Express实现一个简单的博客
- 【unity3d游戏开发之基础篇】unity3d射线的原理用法以及一个利用射线实现简单拾取的小例子
- 学习笔记之Python 切片:利用切片操作,实现一个trim()函数,去除字符串首尾的空格
- 深度学习(二):用CNTK在Python下实现一个简单的FeedForward网络
- 使用python的Flask实现一个简单RESTful API服务器端
- Python学习笔记23:Django构建一个简单的博客网站(一个)
- 【unity3d游戏开发之基础篇】unity3d射线的原理用法以及一个利用射线实现简单拾取的小例子
- Python基础语法学习--函数+案例--定义一个函数,实现两个数的四则运算
- 利用Python的Flask框架来构建一个简单的数字商品支付解决方案
- SVM实现多分类的程序基础工作(二)——通过一个简单libsvm例子迈入libsvm学习的大门
- 【python学习笔记】flask实现简单的接收json返回json的接口
- 【unity3d游戏开发之基础篇】unity3d射线的原理用法以及一个利用射线实现简单拾取的小例子
- 利用Flask + python3.6+MYSQL编写一个简单的评论模块。
- 利用Python实现一个感知机学习算法
- python+flask实现简单博客
- 利用Python进行数据分析(7) pandas基础: Series和DataFrame的简单介绍 一、pandas 是什么 pandas 是基于 NumPy 的一个 Python 数据分析包,主
- android基础学习之一个简单的歌词滚动软件的实现
- python学习笔记:"爬虫+有道词典"实现一个简单的英译汉程序
- Unity3D学习(三):利用NGUI实现一个简单的左右摇杆