我想我今天可能已经太久了,而且我不能很好地解决这个问题。我对python很新,并且已经玩了大约一个星期的烧瓶,这是我的第一个真正的'我建立的应用程序请温柔。
该应用程序允许内部客户(数据库)输入他们的票号并登录表单。该表单现在提交并保存在sqlite DB中,带有ID,票证#,登录,create_time和活动标志。
在另一个页面上,我有一个可称为管理列表的页面,它会呈现当前在数据库中并标记为活动的所有票证。我已经使用jinja2 for循环填充了这个,并且有一个内置的按钮。
例如:
[ 1 ] [ ticket number ] [ login ] [ button ]
[ 2 ] [ ticket number ] [ login ] [ button ]
按钮是我的问题。我非常不确定如何点击特定按钮导致对数据库中该条目的操作。我希望将状态字段从1翻转为0(真假也有效),因此这些可以基本上标记为完整但仍可用于分析。
感谢阅读,这里有一些片段。
views.py
@app.route('/', methods=['GET', 'POST'])
def index():
form = TicketForm()
ticket = Ticket.query.filter_by(status=1)
if request.method == 'GET':
return render_template('index.html', form=form, ticket=ticket)
elif request.method == 'POST':
if form.validate() == False:
flash('All fields are required, please update and try again.')
return render_template('index.html', form=form, ticket=ticket)
else:
remedy = Ticket(request.form['tt'], request.form['login'], create=datetime.datetime.utcnow(), status=1)
db.session.add(remedy)
db.session.commit()
flash('Your ticket has been added to the queue')
return redirect(url_for('index'))
@app.route('/manage', methods=['GET'])
def manage():
if request.method == 'GET':
ticket = Ticket.query.all()
return render_template('manage.html', ticket=ticket)
models.py
class Ticket(db.Model):
id = db.Column(db.Integer, primary_key=True)
tt = db.Column(db.String(10))
user = db.Column(db.String(20))
create = db.Column(DateTime, default=datetime.datetime.utcnow)
status = db.Column(db.Integer)
def __init__(self, tt, user, create, status):
self.tt = tt
self.user = user
self.create = create
self.status = status
manage.html
{% extends "base.html" %}
{% block content %}
<table class="table" width=50%>
<thead>
<tr>
<th>#</th>
<th>Ticket Number</th>
<th>Requester Login</th>
<th>Time Requested (UTC)</th>
<th>Cancel Request</td>
</tr>
</thead>
<tbody>
{% for ticket in ticket %}
<tr>
<td>{{ ticket.id }}</td>
<td>{{ ticket.tt }}</td>
<td>{{ ticket.user }}</td>
<td>{{ ticket.create }}</td>
<td><button type="button" class="btn btn-xs btn-danger">Kill</button></td>
</tr>
{% endfor %}
</tbody>
</table>
{% endblock %}
答案 0 :(得分:2)
通常你会添加另一个视图来处理翻转。需要注意的是,某些浏览器帮助程序会在网页上预加载“普通”链接以检查病毒并尝试有用的缓存,因此请避免使用简单链接来查找可以更改数据的链接。所以我们将改为使用表格:
将您的val dataRDD = sc.textFile(args(0)).map(line => line.split(" ")).map(x => Array(x(0).toInt, x(1).toInt, x(2).toInt))
var arr = new Array[Int](3)
printArr(arr)
dataRDD.map(x => {arr=x})
printArr(arr)
更改为:
<td><button type="button" class="btn btn-xs btn-danger">Kill</button></td>
然后添加一个视图来完成繁重的工作:
<td>
<form action="{{ url_for('flip') }}" method="post">
<input type="hidden" name="flip" value="{{ ticket.id }}"/>
<input type="submit" class="btn btn-xs btn-danger" value="Kill"/>
</form>
</td>
所以我们只是抓住@app.route('/flip', methods=['POST'])
def flip():
ticket = Ticket.query.filter_by(id=request.form["flip"]).first_or_404()
ticket.status = 0
db.session.commit()
return redirect(url_for('index'))
并查看它是否存在于数据库中,如果存在,我们会将id
翻转为status
然后重定向({{ 1}})用户返回0
视图。