0

json を介したオブジェクトの読み込みをサポートする django ビューを開発する方法と、ブロックされた js を持つクライアントの場合、非 js フォールバックをサポートする必要があることを疑問に思っていました- ObjectName.objects.filter() のようなクエリセットを使用します

json による動的データ読み込みをサポートし、json なしでオブジェクトを取得するようなビューの最良のアプローチは何ですか? または、単に私のアプローチが完全に間違っているため、http: //www.usatoday.com のような ajax 動的サイトを作成する方法についてさらに情報を入手する必要があります。

def index(request):
    q = Page.objects.all()
    return TemplateResponse(request, "orders/order_index.html",
                                {'object_list': q,},)

私の質問に関連する追加のデータが必要な場合は、私に尋ねてください。

更新 1 - 例:

Index は、サイト (example.com) に入ったときに表示される最初のページをレンダリングします

def index(request):
    q = Entry.objects.all().order_by('-id')
    return TemplateResponse(request, 'index.html', {'object_list': q, })


def detail(request, slug):
    q = get_object_or_404(Entry.objects.all(), slug=slug)
    return TemplateResponse(request, 'blog/templates/blog_detail.html', {'object': q, })

index.html

{% extends "base.html" %}
{% load webdesign %}
{% load markup %}
{% load humanize %}
{% load endless %}
{% load i18n %}

{% block content %}
    {% paginate object_list %}
    {% for object in object_list %}
        <article>

            <h2>{{ object.title }}</h2>

            <div>

            </div>
            <hr>
            <p>
                {{ object.get_short_text|markdown }}
            </p>

            <div class="clearfix"></div>
            <div class="row">
                <div class="large-6 columns">
                    <span class="metadata"><i class="foundicon-clock"></i> {{ object.date_added|date:"j E Y" }} ({{ object.date_added|naturaltime }})</span>
                </div>
            </div>
            <a class="button expand read_more" href="{{ object.get_absolute_url }}">{% trans "Read more" %}</a>
            <hr>

        </article>
    {% endfor %}
    {% show_pages %}
{% endblock %}

ここに画像の説明を入力

non ajax
[16/Mar/2013 15:16:52] "GET / HTTP/1.1" 200 2275
[16/Mar/2013 15:16:52] "GET /site_media/static/sass/style.css HTTP/1.1" 304 0
[16/Mar/2013 15:16:52] "GET /site_media/static/foundicons/foundation_icons_general/stylesheets/general_foundicons.css HTTP/1.1" 304 0
[16/Mar/2013 15:16:52] "GET /site_media/static/foundation/js/vendor/custom.modernizr.js HTTP/1.1" 304 0
[16/Mar/2013 15:16:52] "GET /site_media/static/foundation/js/vendor/zepto.js HTTP/1.1" 304 0
[16/Mar/2013 15:16:52] "GET /site_media/static/foundation/js/foundation.min.js HTTP/1.1" 304 0
[16/Mar/2013 15:16:52] "GET /site_media/static/img/logo.png HTTP/1.1" 304 0
[16/Mar/2013 15:16:52] "GET /site_media/static/img/navy_blue_min.png HTTP/1.1" 304 0
[16/Mar/2013 15:16:52] "GET /site_media/static/img/sub.png HTTP/1.1" 304 0
[16/Mar/2013 15:16:52] "GET /site_media/static/foundicons/foundation_icons_general/fonts/general_foundicons.woff HTTP/1.1" 304 0
[16/Mar/2013 15:16:52] "GET / HTTP/1.1" 200 14
index
ajax
4

1 に答える 1

0

request.is_ajax()異なるタイプの応答を返すために活用する方法の簡単な例を次に示します。

import json

from django.http import HttpResponse
from django.shortcuts import render


def your_view(request):
    data = {'foo': 'bar'}
    if request.is_ajax():
        return HttpResponse(json.dumps(data), mimetype='application/json')
    else:
        return render(request, 'some-template.html', data)
于 2013-03-06T13:46:46.317 に答える