我有一个模板home.html
,它是Django中应用程序的视图。现在,我在html
文件中添加了一些模板,以允许动态生成HTML。例如,我使用{% load static %}
,然后使用href="{% static "path/to/resources" %}"
。因此,当我打开应用程序时,运行服务器后,将动态创建路径。
现在,问题在于,动态加载的静态文件还需要加载其他静态文件(以及扩展模板)。我以为DjangoTemplating可能会递归地工作,并且也可以在被调用的文件上工作,但是可悲的是那不是真的。
那么,我该怎么做才能确保Django将所有模板逻辑都考虑在内并允许其运行?
home.html
代码段:
{% load static %}
<area alt="andhra" title="Andhra Pradesh" name="andhra" href="{% static "personal/pages/andhra.html" %}" shape="poly" ... />
andhra.html
类似于:
{% extends "personal/post.html" %}
{% blockcontent %}
<style>
#slider
{
width: 80%;
....
<div class="carousel-inner">
<div class="carousel-item active">
{% load static %}
<img class="d-block w-100" src="{% static "personal/images/andhraImages/1911-1915.jpg" %}" alt="First slide">
</div>
...
{% endblock %}
要扩展模板:post.html
,其模板中包含{% blockcontent %}
和{% endblock %}
。
andhra.html
未被模板处理。也就是说,当我打开应用程序home.html
时,已正确加载,但是当我从andhra.html
转到home.html
时,DjangoTemplating完全不会对其进行处理。
答案 0 :(得分:1)
因此,正如Daniel Roseman在评论中所说,将文件作为静态文件加载是行不通的。我们希望django渲染它们。因此,我在state
中创建了一个函数views.py
:
def state(request,state):
return render(request,'personal/pages/'+state+'.html')
这意味着它将尝试在templates/personal/pages/<state>.html
处渲染文件。现在我的urls.py
如下:
urlpatterns = [
path('',views.index,name='index'),
path('<state>',views.state,name="state")
]
请注意,这属于应用polls
。现在,由于mysite的urls.py
具有polls/
,因此localhost:8000/polls/<state>
现在可以访问这些视图的链接。
现在在每个地方我都想要一个静态链接,我通过以下方式创建了一个动态链接:
href="{% url 'state' 'uttarakhand' %}"
其中'state'
是name
的{{1}},而urlpattern
是输入值。