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:complete
要約すると、PJAXスクリプトが実行され、が呼び出されたため、私のコードは機能すると思います。ヘッダーを再確認して、ローカルホストが速すぎてページの更新に気付かないのではなく、pjaxであることを確認したいだけです。問題は、ChromeまたはFirefoxでX-PJAXヘッダーが表示されないことです。
ご覧のとおり、ヘッダーを取得してテンプレートに送信して表示しようとしましたが、出力されますNone
。
助けてください。