То, как я использую шаблон Django, расширяет переменную?

Я не знаю, было ли это предложено уже, а скорее, чем хранение списка IP ботов, которых необходимо было бы просканировать через по каждому запросу страницы, почему бы не установить cookie или var сессии для отслеживания ботов? Вот пример в PHP:

<?php
// bot check
$now = microtime(true);
// bot counter var
$botCounter = 0;
if (array_key_exists('botCheck_panicCounter', $_REQUEST))
{
  $botCounter = $_REQUEST['botCheck_panicCounter'];
}

// if this seems to be a bot
if ($botCounter > 5)
{
  die('Die()!!');
}

// if this user visited before
if (array_key_exists('botCheck_lastVisit', $_REQUEST))
{
  $lastVisit = $_SESSION['botCheck_lastVisit'];
  $diff = $now - $lastVisit;

  // if it's less than a second
  if ($diff < 1)
  {
    // increase the bot counter
    $botCounter += 1;
    // and save it
    $_REQUEST['botCheck_panicCounter'] = $botCounter;
  }
}

// set the var for future use
$_SESSION['botCheck_lastVisit'] = $now;

// ---------------
// rest of the content goes here
?>

Я не проверял на синтаксические ошибки, но Вы получаете идею.

8
задан Thierry Lam 25 August 2009 в 21:35
поделиться

2 ответа

{% extends%} фактически принимает строку - местоположение расширяемого шаблона.

Если вы хотите объявить эту переменную в Python, передайте ее в загрузчик шаблонов, используя ваш словарь. Пример:

import django.http
from django.shortcuts import render_to_response
# ...
INDEX_EXTEND = "index.html"
# ...
def response(request) :
    return render_to_response("myview.html", {'extend': INDEX_EXTEND})

А затем в представлении:

{% extends extend %}

Обратите внимание, что 'extend' было передано в словаре, переданном в шаблон. Вы, конечно, можете определить переменную где угодно в вашем .py файле - или даже в самом объявлении словаря.

Помните, что {% extends%} также может быть вызван как например:

{% extends "index.html" %}

Ознакомьтесь с документацией по Наследованию шаблонов ,

16
ответ дан 5 December 2019 в 07:35
поделиться

Yes, it's just a context variable like any other.

You don't need to use a variable - {% extends "main.html" %} is perfectly acceptable, in fact preferable unless you need to do something massively dynamic with template inheritance.

6
ответ дан 5 December 2019 в 07:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: