标签:
from app import app,db,lm,models
from flask import render_template,flash,redirect,url_for,session,request,g
from .forms import LoginForm
from .models import User
from flask.ext.login import login_user,logout_user,current_user,login_required
@lm.user_loader
def load_user(id):
return User.query.get(int(id))
@app.before_request
def before_request():
g.user = current_user
@app.route('/')
@app.route('/index')
@login_required
def index ():
user=g.user
posts=[
{'author':{'nickname':'John'},
'body':'Beautiful day in Portland!'},
{'author':{'nickname':'Susan'},
'body':'The Avengers movie was so cool!'}
]
return render_template("index.html",
title="Home",
user=user,
posts=posts)
@app.route('/login', methods = ['GET', 'POST'])
def login():
if g.user is not None and g.user.is_authenticated:
return redirect(url_for('index'))
form = LoginForm()
if form.validate_on_submit():
if models.User.query.filter_by(nickname=form.openid.data).first():
user = User.query.filter_by(nickname=form.openid.data).first_or_404()
login_user(user)
return redirect(url_for('index'))
else:
return render_template('login.html',
title = 'Sign In',
error='[NO]',
form = form)
return render_template('login.html',
title = 'Sign In',
form = form)
@app.route('/logout')
@login_required
def logout():
logout_user()
return redirect(url_for('index'))
@app.route('/user/<nickname>')
@login_required
def user(nickname):
user=User.query.filter_by(nickname=nickname).first()
if user==None:
flash('user'+nickname+'not found!')
return redirect(url_for('index'))
posts=[
{'author':user,'body':'Test post #1 !!!'},
{'author':user,'body':'Test post #2 !!!'}
]
return render_template('user.html',
user=user,
posts=posts
)
#根据nickname区分用户,进入不同的用户界面{% extends "base.html" %}
{% block content %}
<h1>User:{{user.nickname}} </h1>
<hr>
{% for post in posts %}
<p>
{{post.author.nickname}} says:<b>{{post.body}}</b>
</p>
{% endfor %}
{% endblock %}
<html>
<head>
{% if title%}
<title>{{title}} - mybolg</title>
{% else%}
<title>Welcome - myblog</title>
{% endif %}
</head>
<body>
<div>MyBlog:<a href="/index">Home</a>
{% if g.user.is_authenticated %}
|<a href="{{url_for('user',nickname = g.user.nickname)}}">Your Profile</a>
|<a href="{{url_for('logout')}}">Logout</a>
{% endif %}
</div>
<hr>
{% with messages = get_flashed_messages() %}
{% if messages %}
<ul>
{% for message in messages %}
<li>{{message}}</li>
{% endfor %}
</ul>
{% endif %}
{% endwith %}
{% block content %}
{% endblock %}
</body>
</html>from app import db
import os
sep=os.sep
class User(db.Model):
id = db.Column(db.Integer,primary_key=True)
nickname=db.Column(db.String(64),index=True,unique=True)
email=db.Column(db.String(120),index=True,unique=True)
posts=db.relationship('Post',backref='author',lazy='dynamic')
def avatar(self,size):
return sep+'static'+sep+'img'+sep+'1.jpg'+' width= '+size
def is_authenticated (self):
return True
def is_active(self):
return True
def is_anonymous(self):
return False
def get_id(self):
try:
return unicode(self.id)
except NameError:
return str(self.id)
def __repr__(self):
return '<User %r>'%(self.nickname)
class Post(db.Model):
id=db.Column(db.Integer,primary_key=True)
body=db.Column(db.String(140))
timestamp=db.Column(db.DateTime)
user_id=db.Column(db.Integer,db.ForeignKey('user.id'))
def __repr__(self):
return '<Post %r>'%(self.body)
{% extends "base.html" %}
{% block content %}
<table>
<tr valign='top'>
<td><img src={{user.avatar('128')}}></td>
<td><h1>User:{{user.nickname}} </h1></td>
</tr>
</table>
<hr>
{% for post in posts %}
<table>
<tr valign='top'>
<td><img src={{user.avatar('50')}}></td>
<td>{{post.author.nickname}}
says:<br>{{post.body}}</td>
</tr>
</table>
{% endfor %}
{% endblock %}<table>
<tr valign='top'>
<td><img src={{user.avatar('50')}}></td>
<td>{{post.author.nickname}}
says:<br>{{post.body}}</td>
</tr>
</table>{% extends "base.html" %}
{% block content %}
<table>
<tr valign='top'>
<td><img src={{user.avatar('128')}}></td>
<td><h1>User:{{user.nickname}} </h1></td>
</tr>
</table>
<hr>
{% for post in posts %}
{% include 'post.html' %}
{% endfor %}
{% endblock %}from app import db
import os
sep=os.sep
class User(db.Model):
id = db.Column(db.Integer,primary_key=True)
nickname=db.Column(db.String(64),index=True,unique=True)
email=db.Column(db.String(120),index=True,unique=True)
posts=db.relationship('Post',backref='author',lazy='dynamic')
about_me=db.Column(db.String(140))
last_seen=db.Column(db.DateTime)
def avatar(self,size):
return sep+'static'+sep+'img'+sep+'1.jpg'+' width= '+size
def is_authenticated (self):
return True
def is_active(self):
return True
def is_anonymous(self):
return False
def get_id(self):
try:
return unicode(self.id)
except NameError:
return str(self.id)
def __repr__(self):
return '<User %r>'%(self.nickname)
class Post(db.Model):
id=db.Column(db.Integer,primary_key=True)
body=db.Column(db.String(140))
timestamp=db.Column(db.DateTime)
user_id=db.Column(db.Integer,db.ForeignKey('user.id'))
def __repr__(self):
return '<Post %r>'%(self.body)from flask.ext.wtf import Form
from wtforms import StringField,BooleanField,TextAreaField
from wtforms .validators import DataRequired,Length
class LoginForm(Form):
openid=StringField('openid',validators=[DataRequired()])
remember_me=BooleanField('remember_me',default=False)
class EditForm(Form):
nickname=StringField('nickname',validators=[DataRequired()])
about_me=TextAreaField('about_me',validators=[Length(min=0,max=140)])
#TextAreaField( )是多行文本输入
#validators=[Length(min=0,max=140)],validators过滤器,输入最小0,最大140{% extends "base.html" %}
{% block content %}
<h1>Edit Your Prfile</h1>
<form action="" method="post" name="edit">
{{ form.hidden_tag() }}
<table>
<tr>
<td>Your nickname:</td>
<td>{{form.nickname(size=24)}}</td>
</tr>
<tr>
<td>About yourself:</td>
<td>{{form.about_me(cols=32,rows=4)}}</td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="Save Changes"></td>
</tr>
</table>
</form>
{% endblock %}from app import app,db,lm,models
from flask import render_template,flash,redirect,url_for,session,request,g
from .forms import LoginForm, EditForm
from .models import User
from flask.ext.login import login_user,logout_user,current_user,login_required
from datetime import datetime
@lm.user_loader
def load_user(id):
return User.query.get(int(id))
@app.before_request
def before_request():
g.user = current_user
if g.user.is_authenticated:
g.user.last_seen=datetime.utcnow()
db.session.add(g.user)
db.session.commit()
@app.route('/')
@app.route('/index')
@login_required
def index ():
user=g.user
posts=[
{'author':{'nickname':'John'},
'body':'Beautiful day in Portland!'},
{'author':{'nickname':'Susan'},
'body':'The Avengers movie was so cool!'}
]
return render_template("index.html",
title="Home",
user=user,
posts=posts)
@app.route('/login', methods = ['GET', 'POST'])
def login():
if g.user is not None and g.user.is_authenticated:
return redirect(url_for('index'))
form = LoginForm()
if form.validate_on_submit():
if models.User.query.filter_by(nickname=form.openid.data).first():
user = User.query.filter_by(nickname=form.openid.data).first_or_404()
login_user(user)
return redirect(url_for('index'))
else:
return render_template('login.html',
title = 'Sign In',
error='[NO]',
form = form)
return render_template('login.html',
title = 'Sign In',
form = form)
@app.route('/logout')
@login_required
def logout():
logout_user()
return redirect(url_for('index'))
@app.route('/user/<nickname>')
@login_required
def user(nickname):
user=User.query.filter_by(nickname=nickname).first()
if user==None:
flash('user'+nickname+'not found!')
return redirect(url_for('index'))
posts=[
{'author':user,'body':'Test post #1 !!!'},
{'author':user,'body':'Test post #2 !!!'}
]
return render_template('user.html',
user=user,
posts=posts
)
@app.route('/edit',methods=["POST","GET"])
@login_required
def edit():
form=EditForm()
if form.validate_on_submit():
g.user.nickname=form.nickname.data
g.user.about_me=form.about_me.data
db.session.add(g.user)
db.session.commit()
flash('Your changes have been saved!')
return redirect(url_for('edit'))
else:
form.nickname.data=g.user.nickname
form.about_me.data=g.user.about_me
return render_template('edit.html',form=form)@app.route('/edit',methods=["POST","GET"])
@login_required
def edit():
form=EditForm()
if form.validate_on_submit():
g.user.nickname=form.nickname.data
g.user.about_me=form.about_me.data
db.session.add(g.user)
db.session.commit()
flash('Your changes have been saved!')
return redirect(url_for('user',nickname=g.user.nickname))
else:
form.nickname.data=g.user.nickname
form.about_me.data=g.user.about_me
return render_template('edit.html',form=form){% extends "base.html" %}
{% block content %}
<table>
<tr valign='top'>
<td><img src={{user.avatar('128')}}></td>
<td>
<h1>User:{{user.nickname}} </h1>
{% if user.about_me %}<pre>{{user.about_me}}</pre>{% endif %}
{% if user.last_seen %}<p><i>Last seen on:{{user.last_seen}}</i></p>{% endif %}
{% if user.id==g.user.id %}<p><a href="{{url_for('edit')}}">Edit</a></p>{% endif %}
</td>
</tr>
</table>
<hr>
{% for post in posts %}
{% include 'post.html' %}
{% endfor %}
{% endblock %}标签:
原文地址:http://blog.csdn.net/u013055678/article/details/51366029