您的位置:首页 > 编程语言 > Python开发

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 %}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐