Django 模板进阶

谁借莪1个温暖的怀抱¢ 2022-01-26 15:53 379阅读 0赞

本节主要讲 Django模板中的循环,条件判断,常用的标签,过滤器的使用。

  • 列表,字典,类的实例的使用
  • 循环:迭代显示列表,字典等中的内容
  • 条件判断:判断是否显示该内容,比如判断是手机访问,还是电脑访问,给出不一样的代码。
  • 标签:for,if 这样的功能都是标签。
  • 过滤器:管道符号后面的功能,比如{ { var|length }},求变量长度的 length 就是一个过滤器。

其实,用户访问URL到显示内容到网页上,基本流程是:在url.py先登记 要访问的是哪个视图的函数,然后在view.py里面定义函数内容,再根据函数去模板找到对应的字段,填充数据,然后渲染到网页。

home.html内容如下:

一般的变量之类的用 { { }}(变量),功能类的,比如循环,条件判断是用 {% %}(标签)

  1. {% extends 'base.html' %}
  2. {% block title %}
  3. 欢迎光临首页
  4. {% endblock %}
  5. {% block content %}
  6. {% include 'ad.html' %}
  7. <h3>这里"http://127.0.0.1:8000/home/"访问后得到的网页内容</h3>
  8. <!--home2-->
  9. <p>home2</p>
  10. {
  11. { string }}
  12. <!--home3-->
  13. <p>home3</p>
  14. {% for i in TutorialList %}
  15. <li> {
  16. { i }} </li>
  17. <br>
  18. {% endfor %}<!--#for 循环要有一个结束标记-->
  19. <!--home4-->
  20. <p>home4</p>
  21. 站点:{
  22. { info_dict.site }} 内容:{
  23. { info_dict.content }}
  24. <br>
  25. {% for key, value in info_dict.items %}
  26. {
  27. { key }}: {
  28. { value }}
  29. {% endfor %}
  30. <!--home5-->
  31. <p>home5 带逗号结尾</p>
  32. {% for item in List %}
  33. {
  34. { item }},
  35. {% endfor %}
  36. <p>home6 不带逗号结尾</p>
  37. <!--用变量 forloop.last 这个变量,如果是最后一项其为真,否则为假,更改如下: -->
  38. {% for item in List2 %}
  39. {
  40. { item }}{% if not forloop.last %},{% endif %}
  41. {% endfor %}
  42. <p>home7 遍历list输出其中某个字段</p>
  43. <!--当列表中可能为空值时用 for empty-->
  44. <ul>
  45. {% for athlete in athlete_list %}
  46. <li>{
  47. { athlete.name }}</li>
  48. {% empty %}
  49. <li>抱歉,列表为空</li>
  50. {% endfor %}
  51. </ul>
  52. {% endblock %}

对于模板的嵌套不是很理解的,建议先看一下:https://blog.csdn.net/hellokandy/article/details/90644532

在for循环中还有很多有用的东西,如下:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hlbGxva2FuZHk_size_16_color_FFFFFF_t_70

views.py内容如下:

  1. # coding:utf-8
  2. from django.http import HttpResponse
  3. from django.shortcuts import render
  4. def index(request):
  5. return HttpResponse(u"<h1> Django test! <h1>")
  6. def add(request):
  7. a = request.GET['a']
  8. b = request.GET['b']
  9. c = request.GET.get('c', 0) #推荐写法,当没有传递c 的时候默认c 为 0
  10. ret = int(a) + int(b) + int(c)
  11. return HttpResponse("a+b+c= " + str(ret))
  12. def add2(request, a, b):
  13. c = int(a) + int(b)
  14. return HttpResponse("add2: a+b= " + str(c))
  15. def home(request):
  16. return render(request, 'home.html')
  17. '''实例一,显示一个基本的字符串在网页上'''
  18. def home2(request):
  19. string = u"欢迎使用django搭建自己的网站!"
  20. return render(request, 'home.html', {'string': string})
  21. '''实例二,讲解了基本的 for 循环 和 List内容的显示'''
  22. def home3(request):
  23. TutorialList = ["HTML", "CSS", "jQuery", "Python", "Django"]
  24. return render(request, 'home.html', {'TutorialList': TutorialList})
  25. '''实例三,显示字典中内容:'''
  26. def home4(request):
  27. info_dict = {'site': u'自强学堂', 'content': u'各种IT技术教程'}
  28. return render(request, 'home.html', {'info_dict': info_dict})
  29. '''实例四,在模板进行 条件判断和 for 循环的详细操作:'''
  30. def home5(request):
  31. List = map(str, range(20))# 一个长度为20 List
  32. return render(request, 'home.html', {'List': List})
  33. '''实例五,在模板进行 条件判断和 for 循环的详细操作:'''
  34. def home6(request):
  35. List = map(str, range(20))# 一个长度为20 List
  36. return render(request, 'home.html', {'List2': List})
  37. '''实例六,在模板进行 条件判断和 for 循环的详细操作:'''
  38. def home7(request):
  39. athlete_list = [
  40. {'name': u'kandy', 'content': u'各种IT技术教程'},
  41. {'name': u'', 'content': u'各种IT技术教程'},
  42. {'name': u'chen', 'content': u'各种IT技术教程'},
  43. {'name': u'zoory', 'content': u'各种IT技术教程'},
  44. {'name': u'hannah', 'content': u'各种IT技术教程'}
  45. ]
  46. return render(request, 'home.html', {'athlete_list': athlete_list})

url.py内容如下:

  1. from django.contrib import admin
  2. from django.urls import path
  3. from django.conf.urls import include, url
  4. from learn import views as learn_views # add
  5. urlpatterns = [
  6. path('home/', learn_views.home, name='home'),
  7. path('home2/', learn_views.home2, name='home2'),
  8. path('home3/', learn_views.home3, name='home3'),
  9. path('home4/', learn_views.home4, name='home4'),
  10. path('home5/', learn_views.home5, name='home5'),
  11. path('home6/', learn_views.home6, name='home6'),
  12. path('home7/', learn_views.home7, name='home7'),
  13. path('', learn_views.index), # add
  14. path('add/', learn_views.add, name='add'), # new
  15. path('add/<int:a>/<int:b>/', learn_views.add2, name='add2'), # new + 1
  16. path('admin/', admin.site.urls),
  17. ]

在浏览器输入:http://127.0.0.1:8000/home#

#:代表1-7,查看网页输出结果。

发表评论

表情:
评论列表 (有 0 条评论,379人围观)

还没有评论,来说两句吧...

相关阅读

    相关 【C++】模板

    非类型模板参数 模板参数分为类型形参与非类型形参。 类型形参:出现在模块参数列表中,跟在class或者typename之类的参数类型名称。 非类型形参:用一个常量

    相关 Django模板

    本节主要讲 Django模板中的循环,条件判断,常用的标签,过滤器的使用。 1. 列表,字典,类的实例的使用 2. 循环:迭代显示列表,字典等中的内容 3. 条件判断: