もっと読み込むボタンがクリックされるたびに、10個のアイテムを読み込もうとしています。最初に最初の 10 個のアイテムを送信し、ボタンが押されるたびに dajaxice を使用してさらに 10 個のアイテムをロードします。
これが私の見解です
def dj(request, slug):
dj = DJ.objects.get(slug=slug)
dj_song_list = Song.objects.filter(artist=dj, duplicate=False).order_by('-votes', '-release_date')[:10]
return render(request, 'hunt/dj.html', {'dj_song_list': dj_song_list, 'slug': slug, 'dj': dj})
ここに私のjavascriptがあります
<script type="text/javascript">
function load() {
Dajaxice.hunt.load_more(Dajax.process, {'items': $("#dj_song_list").find('div').length - 1, 'dj_name': $('.dj_name').text().trim()})
}
</script>
ここに私のajax.pyがあります
@dajaxice_register
def load_more(request, items, dj_name=None):
if dj_name:
dj = DJ.objects.get(name=dj_name)
dj_song_list = Song.objects.filter(artist=dj, duplicate=False).order_by('-votes', '-release_date')[:items+10]
render = render_to_string('hunt/dj.html', {'dj_song_list': dj_song_list, 'slug': dj.slug, 'dj': dj.name})
dajax = Dajax()
dajax.assign('#edmhunters_body','innerHTML',render)
return dajax.json()
このコードはさらに 10 曲をロードしますが、DJ オブジェクトが正しく渡されません。次のエラーが表示されます
DoesNotExist: DJ matching query does not exist.
調査したところ、スラッグは ajax 呼び出しで正常に印刷されていましたが、ビューではhardwell/hunt/img/.jpg
. おそらく、ナメクジの取得方法に関係があります。スラッグが取得されるHTMLは次のとおりです。
<a href="{% url 'dj' slug=dj.slug %}"><img src="{{ STATIC_URL}}hunt/img/{{ dj.rank }}.jpg"/></a>
スラッグが最後に文字列を追加するのはなぜですか?
ビューにコードを追加して、スラッグの余分な文字列をトリミングしましたが、それでも期待どおりに機能しません。エラーはスローされませんDoesNotExist
が、DJ オブジェクトはまだ渡されていません。
if slug.endswith('/hunt/img/.jpg'):
slug = slug[:-len('/hunt/img/.jpg')]
これが最初にロードされたビューです
これは、AJAX 呼び出し後のビューです。
私は何を間違っていますか?これに対する簡単な解決策はありますか?