写在前面

最近看到稀土掘金在搞2023年终总结征文活动,一直想尝试投稿试试,周末我就花了近一下午时间写完初稿,然后周一、周二完成精读再改稿,感觉OK,昨晚凌晨第一时间在稀土掘金投稿。

结果,又发生了同样的事情。

同样的文章,在博客园上、公号上阅读量很OK,在稀土掘金上就上不来。

这应该是我博客园第四次上榜一了把,也是是第二次找到运营大大了,我都有点不好意思了,我好不容易鼓起勇气想投个稿,结果尴尬,不过后来运营大大也帮忙上推荐了,但是值得一说的是吗,这个掘金阅读量上不来,是我写的不行吗?回头我好好总结下,做个复盘。

先不想了,还是接着更文吧。

模板中标签的使用

DjangoMVC思想,模板是一个文本,用于分离文档的表现形式和内容,而不是将数据与视图混合在一起
先创建静态文件,在mycontent/templates/下创建template_demo.html,暂时先不修改如内容,在django_project/settings.py,修改为如下代码:

TEMPLATES = [    {        'BACKEND': 'django.template.backends.django.DjangoTemplates',        'DIRS': [BASE_DIR+"/mycontent/templates",],   # 默认为[]        '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添加如下代码:

        TEMPLATE_DEMO 

variables_demo: {{ name }}

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)]

效果如下:

2、模板标签列表的使用

template_demo.html添加如下代码:

        TEMPLATE_DEMO 

variables_demo: {{ name }}

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)]

效果如下:

3、模板标签字典的使用

template_demo.html添加如下代码:

        TEMPLATE_DEMO 

variables_demo: {{ name }}

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),]

效果如下:

知识点:

变量模板语法:

  • view:{”HTML变量名” : “views变量名”}
  • HTML:{{变量名}}

4、模板的一些特殊栗子

template_demo.html添加如下代码:

        TEMPLATE_DEMO 

variables_demo: {{ name|safe }}

过滤器部分例子: {{ name|upper }}

length例子: {{ name|length }}

截断的字符串将以 ... 结尾: {{ name|truncatechars:2}}

list_demo: {{ list }}

list_demo: {{ list|first|upper }}

dict_demo: {{ dict }}

mycontent/views.py中添加代码如下:

def variables_demo(request):    name = 'alert("safe test!")'    return render(request, 'template_demo.html', {'name': name})

效果如下:

知识点:

{{ 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 %}

示例:

    {% for athlete in athlete_list %}
  • {{ athlete.name }}
  • {% endfor %}

遍历字典的使用

{% for i,j in views_dict.items %}{{ i }}---{{ j }}{% endfor %}

效果如下:

6、注释标签

Django 注释使用 {# #}。

{# 这是一个注释 #}

写在最后

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

优秀不够,你是否无可替代

软件测试交流QQ群:721256703,期待你的加入!!

欢迎关注我的微信公众号:软件测试君