多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
## 变量和索引 ~~~ {{ 变量名 }} {{ info_dict.site }} key使用点进行索引 info_dict.items info_dict.keys info_dict.values {{ info_list.0 }} 使用点运算进行索引 ~~~ --- ## 逻辑运算 模板中的逻辑操作 ``` # 这些比较都可以在模板中使用,比如 ==, !=, >=, <=, >, < : and, or, not, in, not in ``` >[danger] 注意:比较符号前后必须有至少一个空格! ## 标签 ``` # 对模板中的block标签进行填充 {% extends 'template.html' %} # 导入html代码 {% include 'template.html' %} {% block title %}默认值或者替换值{% endblock %} ``` ## for循环 ``` {% for item in list %} {{ item }} {% endfor %} ``` #### empty ``` {% for athlete in athlete_list %} <li>{{ athlete.name }}</li> {% empty %} <li>抱歉,列表为空</li> {% endfor %} ``` ### for循环中的变量 ``` forloop.counter # 索引从 1 开始算 forloop.counter0 # 索引从 0 开始算 forloop.revcounter # 索引从最大长度到 1 forloop.revcounter0 # 索引从最大长度到 0 forloop.first # 当遍历的元素为第一项时为真 forloop.last # 当遍历的元素为最后一项时为真 forloop.parentloop # 用在嵌套的 for 循环中,获取上一层 for 循环的 forloop ``` ## if判断 ``` {% if 判断 %} {% else %} {% endif %} ``` ## url ``` <a href="{% url 'add' 4 5 %}">URL</a> ``` 还可以使用 as 语句将内容取别名(相当于定义一个变量),多次使用(但视图名称到网址转换只进行了一次) ``` {% url 'some-url-name' arg arg2 as the_url %} <a href="{{ the_url }}">链接到:{{ the_url }}</a> ``` ## 模板中 获取当前网址,当前用户 如果不是在 views.py 中用的 render 函数,是 render_to_response 的话,需要将 request 加入到 上下文渲染器(点击查看详细) ### Django 1.7 及以前 修改 settings.py 如果没有 TEMPLATE_CONTEXT_PROCESSORS 请自行添加下列默认值,是否缺少最后一行。 ``` TEMPLATE_CONTEXT_PROCESSORS = ( "django.contrib.auth.context_processors.auth", "django.core.context_processors.debug", "django.core.context_processors.i18n", "django.core.context_processors.media", "django.core.context_processors.static", "django.core.context_processors.tz", "django.contrib.messages.context_processors.messages", "django.core.context_processors.request", ) ``` 然后在 模板中我们就可以用 request 了。 ### Django 1.8 及以后 修改 settings.py ``` TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ ... 'django.template.context_processors.request', ... ], }, }, ] ``` #### 获取当前用户 ``` {{ request.user }} ``` 如果登陆就显示内容,不登陆就不显示内容: ``` {% if request.user.is_authenticated %} {{ request.user.username }},您好! {% else %} 请登陆,这里放登陆链接 {% endif %} ``` #### 获取当前网址 ``` {{ request.path }} ``` 或者 ``` {{ request.path_info }} ``` #### 获取当前 GET 参数 ``` {{ request.GET.urlencode }} ``` ### 合并到一起用的一个例子 ~~~ <a href="{{ request.path }}?{{ request.GET.urlencode }}&delete=1">当前网址加参数 delete</a> ~~~