0

我正在尝试使用 jQuery-pjax 和 django-pjax 对我的一些观点进行 pjaxify。据我了解,每个 pjax 请求都会发送一个额外的 header X-PJAX: True。但是,即使(我认为)我的 pjax 代码工作正常,我也无法在任何地方找到它。

基本模板stock-template.html

<ul>
    <li><a data-pjax href="/basic/stock/" id="link-stock-index"></li>
    <li><a data-pjax href="/basic/stock/list/" id="link-stock-list"></li>
</ul>

<script type="text/javascript">
$(document).ready(function(){

    if ($.support.pjax) {

      // I have tried the basic way
      // $(document).pjax('a[data-pjax]', '.tab-content)
      // here is a simplified version of using pjax through the click event

      // the container does get updated
      $(document).on('click', 'a[data-pjax]', function(event) {
        var container = $('.tab-content')
        $.pjax.click(event, {container: container})
      })

      // this gets executed
      $(document).on('pjax:complete', console.log('pjaxify complete'))

    }

});
</script>

在模板 1(股票索引)stock.html和模板 2(股票列表)中stock-list.html ,我扩展了模板并重用了上面的导航,同时将 a<div class="tab-content">作为指定容器放入其中。

网址.py

urlpatterns = patterns('',
    url(r'^$', stock.index, name='index'),
    url(r'^stock/$', stock.index),
    url(r'^stock/list', stock.slist),
)

视图.py

def index(request):
    context_instance = RequestContext(request, {
        'pjax': request.META.get('HTTP_X_PJAX'), 
    })         
    return TemplateResponse(request, 'basic/stock/stock.html', context_instance)


def slist(request):
    items = Stock.objects.all()
    context_instance = RequestContext(request, {
        'pjax': request.META.get('HTTP_X_PJAX'),
    })
    return TemplateResponse(request, 'basic/stock/stock-list.html', context_instance)

总而言之,我认为我的代码有效,因为 PJAX 脚本被执行pjax:complete并被调用。我只想仔细检查标题以确保它是 pjax 而不是 localhost 太快而无法注意到页面刷新。问题是我在 Chrome 或 Firefox 中看不到任何 X-PJAX 标头。

如您所见,我还尝试获取标题并将其发送到模板以显示,但它输出None.

请帮忙。

4

1 回答 1

0

我的问题很愚蠢。PJAX 无法用 template-pjax 交换我的模板,因为我忘记在 pjax 模板中加载 i18n。但我非常感谢@Sean Hogan 关于检查网络面板的提示。

于 2013-01-25T05:29:55.927 回答