ajax を使用して sqlalchemy を呼び出し、ピラミッドを呼び出して、mysql データベースからデータを取得し、ページネーションを行っています。私のAjax呼び出しは次のとおりです。
$.ajax({
type: 'GET',
url: "results",
dataType: 'json',
})
.fail( function (jqXHR, textStatus, errorThrown){
alert(errorThrown);
})
.done(function(data){
$.each(data.myitems, function(index, item){
// do stuff here
});
});
私の見解は次のとおりです。
def pager(request):
query = DBSession.query(MyTable)
page_url = paginate.PageURL_WebOb(request)
customers = paginate.Page(query,
page=int(request.params.get("page", 1)),
items_per_page=25,
url=page_url)
return render_to_response ("templates/my_json.jinja2",
{"customers": customers},
request=request)
私の jinja2 テンプレートには、次のものがあります。
{
"page":{{ customers.page }},
"next_page":{{ customers.next_page }},
"customerlist":[{% for cus in customers %}
{"name":"{{ cus.name }}",
"birthday":"{{ cus.birthday }}",
{% if not loop.last %},{% endif %}{% endfor %}
]
}
私のデータは次のようになります。
{
"thisvariable":1,
"anothervariable":2,
"myitems":[
{"name":"Matt",
"birthday":"1978-02-23 00:00:00"},
{"name":"Carol\y",
"birthday":"1967-05-05 00:00:00"},
{"name":"Bob",
"birthday":"1984-02-03 00:00:00"}
]
}
Carol\y の「\」をエスケープするにはどうすればよいですか? 「SyntaxError: Unexpected token y」というエラーが表示されます。Jinja2 で |e エスケープを試みましたが、同じエラーが発生します。
編集: 私も自分の models.py で試しました:
from re import escape
class MyTable(Base):
....
def __init__(self, name=""):
self.name = escape(name)
それでも同じエラーが発生します。