每次单击加载更多按钮时,我都会尝试加载 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.
在调查中,我发现 slug 在 ajax 调用中打印良好,但在视图中它类似于hardwell/hunt/img/.jpg
. 它可能与如何检索蛞蝓有关。这是我在其中检索 slug 的 HTML。
<a href="{% url 'dj' slug=dj.slug %}"><img src="{{ STATIC_URL}}hunt/img/{{ dj.rank }}.jpg"/></a>
为什么蛞蝓要在末尾附加字符串?
我什至在视图中添加了一个代码来修剪 slug 的额外字符串,但它仍然无法按预期工作。它不会抛出DoesNotExist
错误,但 DJ 对象仍未通过。
if slug.endswith('/hunt/img/.jpg'):
slug = slug[:-len('/hunt/img/.jpg')]
这是最初加载的视图
这是 AJAX 调用后的视图
我究竟做错了什么?有没有更简单的解决方案?