标签:
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