我正在创建一个网站,允许管理员写在菜单项,重新安排他们拖放在一个管理页面上,序列化他们,并让他们在主页上发布的客户登陆。我对这件事的某些方面还很陌生,所以请耐心听我解释。提前谢谢。你知道吗
一个大问题索引.html我不了解jquery,而将其连接到sqlalchemy在这一点上超出了我的理解。下面的jquery是我从另一个stackoverflow问题中“挪用”的,这个问题没有完全回答我的问题。我认为AJAX很可能需要改变
你知道吗索引.html你知道吗
<!DOCTYPE html>
<html lang="en">
<head>
<!-- sortable script -->
<script>
$(function() {
$( "#sortable" ).sortable({
update: function(event, ui) {
var postData = $(this).sortable('serialize');
$.ajax({
type: 'POST',
contentType: 'application/json',
data: JSON.stringify(postData),
dataType: 'json',
url: '/post'
});
}
});
});
</script>
</head>
<body>
<div class="container">
<h1>Admin Page</h1>
<!-- FORM (I have left this out for clarity) -->
<!-- MENU ITEMS -->
<div class="container menu">
<ul id="sortable">
{% for item in items %}
<li class="nobull" id="item_{{ item.id }}">
<div class="menu_item">
{% if item.head == True %}
<div class="menu_heading">
{{ item.name }}
</div>
{% else %}
<div class="menu_item_name">
{{ item.name }}
</div>
<div class="menu_item_description">
{{ item.description }}
</div>
{% endif %}
<a href="{{ url_for('delete_item', item_id=item.id) }}">Delete</a>
</div>
</li>
{% endfor %}
</ul>
<a href="{{ url_for('post') }}" class="save">Save & Post</a>
</div>
</div>
</body>
</html>
routes文件的重点是post()以及如何序列化重新排序的菜单项
你知道吗路线.py你知道吗
from flask import Flask, render_template, flash, redirect, url_for
from siamsite.forms import NewItem
from flask_sqlalchemy import SQLAlchemy
class MenuItem(db.Model):
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
# rank = db.Column(db.Integer)
name = db.Column(db.String(100), unique=False, nullable=False)
description = db.Column(db.Text)
head = db.Column(db.Boolean, default=False)
spice = db.Column(db.Boolean, default=False)
vegetarian = db.Column(db.Boolean, default=False)
image_file = db.Column(db.String(20), nullable=False, default='default.jpg')
def __repr__(self):
return f"MenuItems('{self.name}', '{self.description}')"
@app.route("/", methods=['GET', 'POST'])
def index():
form = NewItem()
if form.validate_on_submit():
new_item = MenuItem(name=form.name.data,
description=form.description.data,
head=form.head.data
)
db.session.add(new_item)
db.session.commit()
flash('You successfully added a new menu item!', 'success')
return redirect(url_for('index'))
items = MenuItem.query.all()
return render_template('index.html', form=form, items=items, title='Siam Street Food')
@app.route("/post", methods=['GET', 'POST'])
def post():
#serialize the re-ordered list here by changing the item MenuItem id
#in sqlalchemy to make it match the order of the re-ordered list
db.session.commit()
return redirect(url_for('index'))
目前没有回答
相关问题 更多 >
编程相关推荐