django 模板及静态资源
2018-10-23 本文已影响93人
智勇双全的小六
模板
1 模板位置
project_name/templates
下创建与你的app_name
同名文件夹。
检查project_name/settings.py
文件,如果没有DIRS
这项,添加之:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')],
'APP_DIRS': True,
....
},
},
]
在 html 文件中涉及到引用其他模板就可以这么写了:
app_name/xxx.html
2 返回 html 页面
编写视图函数。
def form1(request):
return render(request, "app_name/xxx.html")
创建一个命名空间。在 app_name/urls.py 中添加:
app_name = "write_your_app_name_here!"
# 举例:
app_name = "blog"
# 添加 url 。示例如下:
from . import views
url('^form1/$', views.form1, name="form1")
在模板中写超链接如下所示。模板标签 url 的语法就是 url '命名空间:name'
。这个 name 是url('^form1/$', views.form1, name="form1")
中的 name。这样写的好处在于以后修改了视图函数form1
,只要 name 对应的值没有变,就不用修改模板中的相关链接了。
href="{% url 'kingland:form1' %}"
3 模板渲染
渲染范围到 {% endblock %}
位置。如下图的 index.html
文件,如果在{% endblock %}
后面加html 或 js,可能是不会被 Django 的模板读取的。
{% extends 'blog/lib/base.html' %}
{% block content %}
<div class="content-body">
</div>
{% endblock %}
静态资源
- 静态资源的位置。
app_name/static/app_name/
, 在这个目录下存放 css / js / image 等资源。如果 Django 2.0 以上,需要在settings.py
中添加设置:
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]
- 模板中引用静态资源。
调试时打开浏览器控制台,观察输出,如果没有加载资源的404 错误,应该就是调试成功了。如果还是有问题,ctrl + F5 强制刷新试试。
# 1. 模板文件的顶端载入模板标签
{% load staticfiles %}
# 2. 使用 static 标签引用静态资源
<link href="{% static 'app_name/css/main.css' %}" rel="stylesheet">
# 3. 继承模板
{% include 'app_name/xxx.html' %}