我想在django中使用jinja2块作为属性。基本上在每个页面上我都想要一个不同的头文件图像。这是base.html
:
<header id="masthead" style="background-image:url('{% block headerimage %}{% endblock %}'"
. . .
如何从{% static 'img/some-bg.jpeg' %}
index.html
向{% extends "base.html" %}
传递“$(function() {
$("form[name='formSim']").validate({
rules :
{selecedElement : {
required : {
depends : function() {
return $("#action").val() == "opt1";
}
}
}
});
});
?我尝试使用我刚刚展示的这种块语法,它现在可以正常工作。我该如何实现这一目标?我想从一个继承自基本模板的模板传入一个图像url的字符串。谢谢: - )。
答案 0 :(得分:2)
由于标题将位于您网站的每个页面中,因此使用上下文处理器
# app/context_processors.py
from django.contrib.staticfiles.templatetags.staticfiles import static
def get_image_header_url(request):
d = {
reverse('home'): static("images/home.jpg"), # {% static "images/image.jpeg" %}
reverse('about'): "url_of_image/about.jpg",
reverse('contact'): "url_of_image/contact.jpg",
...
}
return {'header_img_url' : d[request.path]}
如果您想要显示随机图像
# app/context_processors.py
import random
def get_random_header_url(request):
image_urls = ['url/image1.jpeg', 'url/image2.jpeg']
return {"header_img_url" : random.choice(image_urls)}
在settings.py
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
.....
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
....
"django.template.context_processors.i18n",
'add.context_processors.get_random_header_url',
],
},
},
]
并在你的html文件中使用它
<header id="masthead" style="{{ header_img_url }}"
...
如果您要加载静态图片
from django.contrib.staticfiles.templatetags.staticfiles import static
static_img_url = static("images/image.jpeg"); # {% static "images/image.jpeg" %}