刘俊凯 发表于 2024-2-15 23:49:48

Django学习(三) 之 模板中标签的使用

写在前面

最近看到稀土掘金在搞2023年终总结征文活动,一直想尝试投稿试试,周末我就花了近一下午时间写完初稿,然后周一、周二完成精读再改稿,感觉OK,昨晚凌晨第一时间在稀土掘金投稿。
结果,又发生了同样的事情。
https://img2023.cnblogs.com/blog/718867/202312/718867-20231212212321238-876328408.png
同样的文章,在博客园上、公号上阅读量很OK,在稀土掘金上就上不来。
https://img2023.cnblogs.com/blog/718867/202312/718867-20231212212340295-1969156354.png
https://img2023.cnblogs.com/blog/718867/202312/718867-20231212212402455-1194528334.png
这应该是我博客园第四次上榜一了把,也是是第二次找到运营大大了,我都有点不好意思了,我好不容易鼓起勇气想投个稿,结果尴尬,不过后来运营大大也帮忙上推荐了,但是值得一说的是吗,这个掘金阅读量上不来,是我写的不行吗?回头我好好总结下,做个复盘。
先不想了,还是接着更文吧。
模板中标签的使用

Django的MVC思想,模板是一个文本,用于分离文档的表现形式和内容,而不是将数据与视图混合在一起
先创建静态文件,在mycontent/templates/下创建template_demo.html,暂时先不修改如内容,在django_project/settings.py,修改为如下代码:
TEMPLATES = [
    {
      'BACKEND': 'django.template.backends.django.DjangoTemplates',
      'DIRS': ,   # 默认为[]
      'APP_DIRS': True,
      'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
      },
    },
]1、模板标签变量的使用

template_demo.html添加如下代码:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>TEMPLATE_DEMO</title>
</head>
<body>
<p>variables_demo: {{ name }}</p>
</body>
</html>在mycontent/views.py中添加代码如下:
def variables_demo(request):
    name = 'variables_demo'
    return render(request, 'template_demo.html', {'name': name})在django_project/urls.py中添加代码如下:
urlpatterns = [
    path("index/", views.index),
    re_path('^$', views.index),
    url('^$', views.index),
    url('^my_content/$', views.my_content),
    url('^my_content/page=(\d+)$', views.pagehelper),
    url('variables_demo/', views.variables_demo)
]效果如下:
https://img2023.cnblogs.com/blog/718867/202312/718867-20231212212437772-302077662.png
2、模板标签列表的使用

template_demo.html添加如下代码:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>TEMPLATE_DEMO</title>
</head>
<body>
<p>variables_demo: {{ name }}</p>
</body>
</html> list_demo: {{ list }}
在mycontent/views.py中添加代码如下:
def list_demo(request):
    list = ['list1','list2','list3']
    return render(request, 'template_demo.html', {'list': list})在django_project/urls.py中添加代码如下:
urlpatterns = [
    path("index/", views.index),
    re_path('^$', views.index),
    url('^$', views.index),
    url('^my_content/$', views.my_content),
    url('^my_content/page=(\d+)$', views.pagehelper),
    url('variables_demo/', views.variables_demo),
    url('list_demo/', views.list_demo)
]效果如下:
https://img2023.cnblogs.com/blog/718867/202312/718867-20231212212453243-1716377888.png
3、模板标签字典的使用

template_demo.html添加如下代码:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>TEMPLATE_DEMO</title>
</head>
<body>
<p>variables_demo: {{ name }}</p>
</body>
</html> list_demo: {{ list }}
dict_demo: {{ dict }}
在mycontent/views.py中添加代码如下:
def dict_demo(request):
    dict_demo = {'dict': 'dict_demo'}
    return render(request, 'template_demo.html', {'dict': dict_demo})在django_project/urls.py中添加代码如下:
urlpatterns = [
    path("index/", views.index),
    re_path('^$', views.index),
    url('^$', views.index),
    url('^my_content/$', views.my_content),
    url('^my_content/page=(\d+)$', views.pagehelper),
    url('variables_demo/', views.variables_demo),
    url('list_demo/', views.list_demo),
    url('dict_demo/', views.dict_demo),
]效果如下:
https://img2023.cnblogs.com/blog/718867/202312/718867-20231212212521400-489387876.png
知识点:
变量模板语法:

[*]view:{"HTML变量名" : "views变量名"}
[*]HTML:{{变量名}}
4、模板的一些特殊栗子

template_demo.html添加如下代码:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>TEMPLATE_DEMO</title>
</head>
<body>
<p>variables_demo: {{ name|safe }}</p>

<p>过滤器部分例子: {{ name|upper }}</p>

<p>length例子: {{ name|length }}</p>

<p>截断的字符串将以 ... 结尾: {{ name|truncatechars:2}}</p>
<p>list_demo: {{ list }}</p>
<p>list_demo: {{ list|first|upper }}</p>
<p>dict_demo: {{ dict }}</p>


</body>
</html>在mycontent/views.py中添加代码如下:
def variables_demo(request):
    name = ''
    return render(request, 'template_demo.html', {'name': name})效果如下:
https://img2023.cnblogs.com/blog/718867/202312/718867-20231212212548460-1151315781.png
https://img2023.cnblogs.com/blog/718867/202312/718867-20231212212636266-1409399926.png
知识点:
{{ views_str|safe }}:将字符串标记为安全,不需要转义,要保证 views.py 传过来的数据绝对安全,才能用 safe。
5、if/else、for标签、遍历字典的使用

if/else标签:
基本语法格式如下:
{% if condition %}
   ... display
{% endif %}
# 或者:

{% if condition1 %}
   ... display 1
{% elif condition2 %}
   ... display 2
{% else %}
   ... display 3
{% endif %}根据条件判断是否输出。if/else 支持嵌套。
{% if %} 标签接受 and ,or或者 not 关键字来对多个变量做判断 ,或者对变量取反( not ),例如:
{% if athlete_list and coach_list %}
   athletes 和 coaches 变量都是可用的。
{% endif %}for 标签使用:
基本语法格式如下:
{% for athlete in athlete_list %}
    {{ athlete.name }}
{% endfor %}示例:
<ul>
{% for athlete in athlete_list %}
    <li>{{ athlete.name }}</li>
{% endfor %}
</ul>遍历字典的使用
{% for i,j in views_dict.items %}
{{ i }}---{{ j }}
{% endfor %}效果如下:
https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/34b18e1682044c469bb1d055b9802cf9~tplv-k3u1fbpfcp-jj-mark:0:0:0:0:q75.image#?w=615&h=683&s=31631&e=png&b=ffffff
6、注释标签

Django 注释使用 {# #}。
{# 这是一个注释 #}写在最后

感觉有点像Java中的httl、jsp都有点像呢,马上熟悉感就来了,作为一个Java党,这突然而来的熟悉感,真的好亲戚,哈哈!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: Django学习(三) 之 模板中标签的使用