programing

django-el-pagination에 대해 다중 페이지화(ajax)가 작동하지 않습니다.

skycolor 2023. 8. 20. 10:34
반응형

django-el-pagination에 대해 다중 페이지화(ajax)가 작동하지 않습니다.

2개의 쿼리 세트가 있습니다.게시물 및 댓글.저는 아약스를 사용하여 이것들을 렌더링하기 위해 장고-엘-파지네이션을 사용하고 있습니다.

제 견해는 다음과 같습니다.

def profile(request, user, extra_context=None):

    profile = Profile.objects.get(user__username=user)

    page_template = 'profile.html'

    if request.is_ajax():
        user_queryset = request.GET.get('user_queryset')
        print('Queryset:', user_queryset)
        if user_queryset == 'user_posts':
            page_template = 'user_posts.html'
        elif user_queryset == 'user_comments':
            page_template = 'user_comments.html'
        else:
            pass

    print('Template:', page_template)

    user_posts = Post.objects.filter(user=profile.user).order_by('-date')
    user_comments = Comment.objects.filter(user=profile.user).order_by('-timestamp')

    context = {'user_posts': user_posts,'user_comments': user_comments, 'page_template': page_template}

    if extra_context is not None:
        context.update(extra_context)

    return render(request, page_template, context)

어떤 쿼리 세트가 사용되고 있는지 확인하는 Ajax 통화가 있습니다.따라서 'more comments' 또는 'more posts'(템플릿에서)를 클릭하여 더 많은 페이지로 된 개체를 가져올 때 어떤 쿼리 세트에서 온 것인지 알 수 있습니다.그러나 위의 코드를 사용하고 아약스 페이지에 대해 '추가'를 클릭하면 관련 하위 템플릿이 아닌 전체 페이지가 추가됩니다.user_posts.html또는user_comments.html)그런데 그.if request.is_ajax()코드 블록은 올바르게 작동합니다. 올바른 템플릿을 인쇄하여 사용할 수 있으므로 이러한 현상이 발생하지 않아야 합니다.

코드 블록을 이것으로 변경할 때

if request.is_ajax():
    page_template = 'user_posts.html'

다음에 대한 Ajax 페이지Post작동합니다. 하지만 저는 아약스 페이지를 추가하고 싶습니다.Comment뿐만 아니라.내 이니셜이 안 되는 이유는 무엇입니까?if request.is_ajax()일은 어떻게 해결할 수 있습니까?

편집:

클릭 시 출력more posts:

Queryset: None
Template: profile.html
Queryset: user_posts
Template: user_posts.html

제이에스

$('body').on('click', '.endless_more', function() {
    console.log($(this).html()); #works successfully 
    var user_queryset;
    if ($(this).html() === 'more posts') {
        console.log('POSTS'); #works successfully 
        var user_queryset = 'user_posts'
    } else if ($(this).html() === 'more user comments') {
        user_queryset = 'user_comments';
        console.log('COMMENTS'); #works successfully 
    } else {
        console.log('none');
    }
    $.ajax({
        type: 'GET',
        url: window.location.href,
        data: {
            'user_queryset': user_queryset
        }

    })
});

프로파일.파일

<!--posts-->
<div class="user_posts_div">
    <div class="endless_page_template">
        {% include "user_posts.html" %}
    </div>
</div>

<!--comments-->
<div class="user_comments_div">
    <div class="endless_page_template">
        {% include "user_comments.html" %}
    </div>
</div>

user_module.dll(하위 템플릿)

{% paginate 5 user_posts %}
    {% for post in user_posts %}
        <div class="user_post">
            <p class="user_post_title_p"><a class="user_post_title" href="{% url 'article' category=post.entered_category id=post.id %}">{{ post.title }}</a></p>
            <p class="user_post_category">/{{ post.entered_category }}</p>
            <p class="user_post_date">{{ post.date|timesince }}</p>
        </div>

    {% endfor %}
{% show_more 'more posts' '...' %}

아래 라인의 출력은 무엇입니까?

print('Queryset:', user_queryset)

아래 라인에 문제가 있는 것 같습니다.

user_queryset = request.GET.get('user_queryset')

게시물 및 주석 부분의 조건과 일치하는 올바른 가져오기 매개 변수 값을 반환하지 않습니다.

당신의 자바스크립트를 다음과 같이 확인해 주시겠습니까?

   user_queryset = 'user_comments';

다음으로 변경해 보십시오.

   var user_queryset = 'user_comments';

코멘트로 직접 이동하면 user_queryset 변수가 정의되지 않고 'user_comments'로 전달되지 않을 것으로 예상됩니다.

언급URL : https://stackoverflow.com/questions/44731075/multiple-pagination-ajax-not-working-for-django-el-pagination

반응형