Получить текущий URL в шаблоне Nunjucks?

Кажется, это должно быть довольно просто, но мне очень трудно найти ответ.

Как найти URL текущей страницы в шаблоне Nunjucks?

Примерно так было бы идеально:

<a href="{{ page.url }}">Some link</a>

3 ответа

Я считаю следующее полезным, если у вас есть загружаемый URL-адрес одной страницы. Если вы создаете свои проекты gulp nunjucks с помощью синхронизации браузера, вы можете построить отношения между ними, получив доступ к параметрам синхронизации браузера через обратный вызов. Затем передайте эти данные обратно в переменную окружения nunjucks.

Вот шаги

  1. создать пустую глобальную переменную
  2. функция обратного вызова пользователя browserync, чтобы получить параметр browsersync для URL-адресов
  3. передать это значение в пустую глобальную переменную на шаге 1
  4. теперь скажите nunjucks создать переменную окружения, которая ссылается на глобальную переменную из шага 1.
  5. построить проект.
  6. ссылайтесь на переменную окружения nunjucks в своем шаблоне.

Ниже приведена «идея» из вашего файла gulpfile.js, но она потребует настройки в зависимости от вашей настройки...

      
const browserSync = require('browser-sync');

//step 1
let mURL  = '';

//...

//step 4...
const manageEnvironment = function (environment) {
  environment.addGlobal('mURL', mURL);
}

function genNunJucks(cb) {
//...
   .pipe(nunjucksRender({
       manageEnv: manageEnvironment,
    });
//...
}

//...

const msync = browserSync.create();
function bSync(cb) {
msync.init({
        port: 49673,
        ui: {
            port: 3002,
        },
        listen: "gulp.wlc",
        browser: "default",
},
//step 2...
callbacks: {
    ready: function (err, bs) {
      //step 3...
      mURL = bs.options.getIn(['urls', 'local']);
    }
  }
});

//watch stuff...

}

//step 5
//npm start

//step 6...
/**
from witin your template, once the project is running, 
you should have acces to {{mURL}}, 
and yes you can do <a href="{{ mURL }}">Some link</a> 
all due to the help of browser-sync.
**/

зависит от атрибутов вашего объекта запроса, если это запрос wsgi от django, я просто печатаю его как {{request.build_absolute_uri}}

Попробуйте что-то вроде этого: {{ request.headers.referer }},

или это: {{ request.url }}.

Другие вопросы по тегам