flask sqlalchemy按照创建时间逆向排序

@app.route('/')
def index():
    context = {
        'questions': Question.query.order_by(text("-create_time")).all()
    }
    return render_template('index.html', **context)

需要从sqlalchemy导入text函数

from flask import Flask, render_template, request, redirect, url_for, session
from exts import db
from models import User, Question
from flask_migrate import Migrate
from functools import wraps
from decorators import login_required
import config
# 导入text函数
from sqlalchemy import text

在这里插入图片描述

参考
https://blog.csdn.net/vonhehe/article/details/95756567

app代码

from flask import Flask, render_template, request, redirect, url_for, session
from exts import db
from models import User, Question
from flask_migrate import Migrate
from functools import wraps
from decorators import login_required
import config
from sqlalchemy import text

app = Flask(__name__)
app.config.from_object(config)
db.init_app(app)
migrate = Migrate(app, db)



@app.route('/')
def index():
    context = {
        'questions': Question.query.order_by(text("-create_time")).all()
    }
    return render_template('index.html', **context)

@app.route('/login/', methods=['GET', 'POST'])
def login():
    if request.method == 'GET':
        return render_template('login.html')
    else:
        telephone = request.form.get('telephone')
        password = request.form.get('password')
        user = User.query.filter(User.telephone == telephone, User.password == password).first()
        if user:
            session['user_id'] = user.id
            # 如果想在31天内都不需要登录
            session.permanent = True
            return redirect(url_for('index'))
        else:
            return '手机号或密码错误,请确认后再登录'

@app.route('/logout/')
def logout():
    # session.pop('user_id')
    # del session['user_id']
    session.clear()
    return redirect(url_for('login'))

@app.route('/question/', methods=['GET', 'POST'])
@login_required
def question():
    if request.method == 'GET':
        return render_template('question.html')
    else:
        title = request.form.get('title')
        content = request.form.get('content')
        question = Question(title=title, content=content)
        user_id = session.get('user_id')
        user = User.query.filter(User.id == user_id).first()
        question.author = user
        db.session.add(question)
        db.session.commit()
        return redirect(url_for('index'))

@app.route('/register/', methods=['GET', 'POST'])
def register():
    if request.method == 'GET':
        return render_template('register.html')
    else:
        telephone = request.form.get('telephone')
        username = request.form.get('username')
        password1 = request.form.get('password1')
        password2 = request.form.get('password2')

        # 验证手机号码,如果被注册,就不能注册了
        user = User.query.filter(User.telephone == telephone).first()

        if user:
            return '该手机号码已被注册,请更换手机号码'
        else:
            # password1 should equal password2
            if password1 != password2:
                return '两次密码不一致,请核对后再填写'
            else:
                user = User(telephone=telephone, username=username, password=password1 )
                db.session.add(user)
                db.session.commit()
                return redirect(url_for('login'))
@app.context_processor
def my_context_processor():
    user_id = session.get('user_id')
    if user_id:
        user = User.query.filter(User.id == user_id).first()
        if user:
            return {'user':user}
    else:
        return {}

if __name__ == '__main__':
    app.run()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值