URL-адреса Django - не разрешать прямое открытие при использовании {% include%} - PullRequest
0 голосов
/ 02 ноября 2018

В шаблон django 2.0.2 я включаю датируемый (от https://datatables.net/)

с использованием

{% include 'ExchangesList.html' %}

в home.html

Все работает нормально.

Но когда я открываю / exchanges / exchanges_list_json / в браузере, появляются данные, используемые для отображения таблицы.

urls.py

urlpatterns = [
#url(r'^$', ExchangesList.as_view(), name="exchanges"),
url(r'^exchanges_list_json/$', ExchangesListJson.as_view(), name="exchanges_list_json"),] 

exchanges_list.js

$(document).ready(function() {
    var table = $('#exchanges_table').DataTable( {
       "ajax": EXCHANGES_LIST_JSON_URL,
...

home.html

...
<script type="text/javascript">
var EXCHANGES_LIST_JSON_URL = '{% url "exchanges_list_json" %}';
</script>
...

views.py

class ExchangesList(TemplateView):
template_name = 'ExchangesList.html'

class ExchangesListJson(BaseDatatableView): 
    model = Exchanges
    columns = [
        'exchange_sort_id',
        'exchange_name',
        'exchange_country',
        'exchange_url',
        'exchange_trade_volume_24h_btc',
        'exchange_last_updated',
        ]
    order_columns = columns

def filter_queryset(self, qs):
    qs = Exchanges.objects.all()

    sSearch = self.request.GET.get('sSearch', None)
    if sSearch:
        qs = qs.filter(Q(exchange_name__istartswith=sSearch) | Q(exchange_description__istartswith=sSearch) | Q(exchange_id__istartswith=sSearch))
    return qs

def prepare_results(self, qs):
    qs = Exchanges.objects.all()

    json_data = []
    for item in qs:                
        json_data.append({
            'exchange_sort_id': escape(item.exchange_sort_id),
            'exchange_name': escape(item.exchange_name),  # escape HTML for security reasons
            'exchange_country': escape(item.exchange_country),
            'exchange_url': escape(item.exchange_url),
            'exchange_trade_volume_24h_btc': escape(item.exchange_trade_volume_24h_btc),
            'exchange_last_updated': item.exchange_last_updated.strftime("%H:%M:%S "),

        })

    #print(json_data)
    #print('len qs ' , len(qs))
    return json_data

Как мне заблокировать прямое открытие exchanges_list_json.html с возможностью включения?

Спасибо за любую помощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...