2

ピラミッド テンプレートに追加したい jQuery テーブル プラグイン (Python スクリプトからデータが与えられる) がありますが、インスタンスを実行してテンプレートからレンダリングされた Web ページを表示すると、ウィジェットが表示されません。私が想像できる唯一のことは、deform を使用して、テンプレートのヘッダーにリンクされている正しいリソースを jQuery が確実に取得できるようにすることです。問題を解決するために変形を統合する方法がわからないことを除いて。

ここに私のinit.pyがあります:

from pyramid.config import Configurator
from sqlalchemy import engine_from_config

from .globals import Session, Base

def main(global_config, **settings):
    """ This function returns a Pyramid WSGI application.
    """
    engine = engine_from_config(settings, 'sqlalchemy.')
    Session.configure(bind=engine)
    Base.metadata.bind = engine
    Base.metadata.reflect()

    config = Configurator(settings=settings)
    config.add_static_view('static', 'static/', cache_max_age=3600)
    #config.add_static_view('static', 'deform:static')
    config.add_route('Building', '/Building')
    config.add_route('home', '/')
    config.scan()
    return config.make_wsgi_app()

これが私のテンプレートファイル 'mytemplate.pt' です:

    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" >
<head>
    <link rel="stylesheet" href="../static/pylons.css" type="text/css" media="screen" charset="utf-8" />
    <link rel="stylesheet" href="../static/JQueryPlugins/Flexigrid/css/flexigrid.pack.css" type="text/css" media="screen" charset="utf-8" />

    <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
    <script type="text/javascript" charset="utf-8" src="../static/JQueryPlugins/Flexigrid/js/flexigrid.pack.js"></script>

</head>
<body>

<div id="container">
<div id="logo"><img src="../static/banner.png" alt="Logo" height="117" width="619" /> </div>
<div id="leftcolumn">
  <ul class="navBar">
  </ul>
</div>
<div id="rightcolumn">
<h1>Physical Plant</h1>
<br />
<script type="text/javascript">
$(".table_id").flexigrid({
    url: '',
    dataType: '',
    colModel : [
        {display: 'ID', name : 'id', width : 40, sortable : true, align: 'center'},
        {display: 'Name', name : 'name', width : 180, sortable : true, align: 'left'},
        ],
    searchitems : [
        {display: 'ID', name : 'id'},
        {display: 'Name', name : 'name', isdefault: true}
        ],
    sortname: "id",
    sortorder: "asc",
    usepager: true,
    title: 'Buildings',
    useRp: true,
    rp: 15,
    showTableToggleBtn: true,
    width: 700,
    height: 200
});   
</script>
<table class="table_id">
<div id="datacolumn" tal:replace="structure data" />

</table>



<script type="text/javascript">
   deform.load()
</script>
</div>
</body>
</html>

これが私のview.pyです:

import csv
import deform
from pyramid.config import Configurator
from pyramid.response import Response
from pyramid.view import view_config
from .globals import Session, Base
from sqlalchemy.exc import DBAPIError

from .KeyDatabase import Building
session = Session()
config = Configurator()
"""
form = deform.Form(someschema)
resources = form.get_widget_resources()
js_resources = resources['js']
css_resources = resources['css']
js_links = [ '%s' % r for r in js_resources ]
css_links = [ 'http://my.static.place/%s' % r for r in css_resources ]
js_tags = ['<script type="text/javascript" src="%s"></script>' % link
           for link in js_links]
css_tags = ['<link rel="stylesheet" href="%s"/>' % link
           for link in css_links]
tags = js_tags + css_tags
return {'form':form.render(), 'tags':tags}
"""
def list_entity(entity_class):
    table = ""
    header = False

    for entity in session.query(entity_class):
        if not header:
            table += entity.table_header() + " \n "
            header = True
        table += entity.table_row() + " \n "

    table += ""
    return table

#@view_config(route_name='home', renderer="templates/mytemplate.pt")
#def my_view(request):
#return {'project':'MyProject'}

@view_config(route_name='home', renderer="templates/mytemplate.pt")
def list_Building(request):
    try:
        return{'data':list_entity(Building)}
    except DBAPIError:
        return Response(conn_err_msg, content_type='text/plain', status_int=500)
4

1 に答える 1

2

Deformが問題にどのように関連しているかわかりません。テンプレート内のJSファイルへのパスを修正する必要があるようです。

<head>
    <link rel="stylesheet" href="/static/pylons.css" type="text/css" media="screen" charset="utf-8" />
    <link rel="stylesheet" href="/static/JQueryPlugins/Flexigrid/css/flexigrid.pack.css" type="text/css" media="screen" charset="utf-8" />

    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
    <script type="text/javascript" charset="utf-8" src="/static/JQueryPlugins/Flexigrid/js/flexigrid.pack.js"></script>

</head>

Firebugまたは他のツールを使用して、すべてのリソースが正しくロードされていることを確認します

于 2012-04-27T07:02:54.073 に答える