小编not*_*you的帖子

使用datetime.date填充WTForms表单对象

我正在为代表账单的对象制作一个crud接口,如水费单,电费单等.

我正在使用sqlalchemy处理数据,使用wtforms来处理表单,并使用flask来处理它.

以下是我的路线看起来像是用来编辑现有账单的表格:

@app.route('/edit_bill/<int:bill_id>', methods = ['GET'])
def edit_bill(bill_id):
    s = Session()
    bill = s.query(Bill).filter_by(id=bill_id).first()
    form = BillForm(obj=Bill)
    return render_template('edit_bill.html', form = form)
Run Code Online (Sandbox Code Playgroud)

使用wtforms,我将bill对象传递给BillForm构造函数,确保表示要编辑的帐单的数据填充到表单中.

这就是它窒息的地方.这是例外:

AttributeError: Neither 'InstrumentedAttribute' object nor 'Comparator' object associated with Bill.date_due has an attribute 'strftime'
Run Code Online (Sandbox Code Playgroud)

现在,我已经深入了解python shell并查询了一个帐单,以确保date_due上有一个datetime.date对象,就是这样.我使用Jinja来构建我的前端,所以我考虑创建一个模板过滤器,但我不知道如何使用wtforms,看起来sqlalchemy无论如何都是窒息.

那么它做什么?我非常有信心我只需要弄清楚如何将该datetime.date对象转换为字符串,但我不知道该怎么做.

HALP.谢谢!

编辑:这是BillForm类:

class BillForm(Form):
    id                  = HiddenField()
    name                = TextField(u'Name:', [validators.required()])
    pay_to              = TextField(u'Pay To:',[validators.required()])
    date_due            = DateField(u'Date Due:',[validators.required()])
    amount_due          = IntegerField(u'Amount Due:', [validators.required()])
    date_late           = DateField(u'Late After:',[validators.required()])
    amount_late         = IntegerField(u'Late Amount:', [validators.required()])
    date_termination …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy jinja2 flask wtforms

4
推荐指数
1
解决办法
3016
查看次数

为什么要使用`url_for`?

我使用Flask编写Web应用程序,我想知道使用url_for模板和应用程序代码生成链接的原因.

这样做可以获得什么:

<link rel="stylesheet" href="{{ url_for('static', filename='css/main.css') }}">
Run Code Online (Sandbox Code Playgroud)

还有这个:

<ul>
    <li><a href="{{ url_for('index') }}">Home</a></li> 
    <li><a href="{{ url_for('about') }}">About Us</a></li>
    <li><a href="{{ url_for('contact') }}">Contact</a></li>
</ul>
Run Code Online (Sandbox Code Playgroud)

而不是硬编码路径?

python flask

4
推荐指数
1
解决办法
1909
查看次数

Gunicorn 500'在POST到Flask应用程序

这是Flask应用程序:

from flask import Flask, request, render_template, redirect, url_for, flash
app = Flask(__name__)

@app.route('/')
def index():
    return render_template('index.html')

@app.route('/contact', methods = ['POST'])
def contact():
    if request.method == 'POST':
        name = request.form['name']
        email = request.form['email']
        message = request.form['message']

        flash(name)
        flash(email)
        flash(message)

    return redirect(url_for('index'))

if __name__ == '__main__':
    app.debug = True
    app.secret_key='a;sldfjka;oeiga;lbneas; biaweag'
    app.run()
Run Code Online (Sandbox Code Playgroud)

这是我正在使用的模板:

<!DOCTYPE html>
<html>
    <head>
    </head>

    <body> 
        <form action="/contact" method="post">
            <input type="text" name="name" />
            <input type="text" name="email" />
            <textarea name="message"> </textarea>
            <input type="submit" />
        </form> 
        <ul>
        {% for …
Run Code Online (Sandbox Code Playgroud)

virtualenv flask python-2.7 gunicorn

2
推荐指数
1
解决办法
2390
查看次数

标签 统计

flask ×3

python ×2

gunicorn ×1

jinja2 ×1

python-2.7 ×1

sqlalchemy ×1

virtualenv ×1

wtforms ×1