我正在尝试用jQuery-pjax和django-pjax对我的一些观点进行pjax化。据我了解,每个 pjax 请求都会发送一个额外的标头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
中,我扩展了模板并重复使用上面的导航,同时将<div class="tab-content">
作为指定的容器放入其中。
urls.py
urlpatterns = patterns('',
url(r'^$', stock.index, name='index'),
url(r'^stock/$', stock.index),
url(r'^stock/list', stock.slist),
)
views.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 而不是本地主机太快而无法注意到页面刷新。问题是我在Chrome或Firefox中看不到任何X-PJAX标头。
如您所见,我还尝试获取标头并将其发送到模板进行显示,但它输出None
.
请帮忙。
我的问题很愚蠢。PJAX 无法将我的模板与 template-pjax 交换,因为我忘记在 pjax 模板中加载 i18n。但我真的很感谢@Sean霍根关于检查网络面板的提示。