美文网首页
day45-模板设计

day45-模板设计

作者: barriers | 来源:发表于2019-01-07 19:26 被阅读0次

    1引入静态文件

    在settings中对最后的STATIC_URL进行如下设置

    STATIC_URL = '/static/'
    STATICFILES_DIRS = [
        os.path.join(BASE_DIR, 'static')
    ]
    

    在新建的html文件中导入设置的样式表的方法有三种;
    方法一

    <link rel="stylesheet" href="../static/css/style.css">
    

    方法二(推荐):

    <link rel="stylesheet" href="/static/css/style.css">
    

    方法三:

    {% load static %}
    <link rel="stylesheet" href="{% static 'css/style.css' %}">
    

    2标签

    2.1if标签

    {% if name %}
        {{ name }}
    {% else %}
        name为空
    {% endif %}
    

    2.2for标签

    {% for i in a %}
        i
    {% empty %}
        a变量为空
    {% endfor %}
    

    2.3forloop变量

    if和for中自带变量forloop,用于统计for循环循环的次数
    判断循环最后一次:{{ forloop.last }},返回布尔值
    判断循环第一次:{{ forloop.first }},返回布尔值
    ifequal:判断两个值是否相等
    {{ forloop.counter0 }}从0开始统计,不加0就从1开始
    {{ forloop.revcounter0 }}倒序以0结束
    {% ifequal forloop.counter 3 %}判断是否等于3

    {% for i in a %}
        <p {% if forloop.counter == 2 %} style="font-weight: bold;" {% endif %}>
        <p {% if forloop.first %} style="font-weight:bold;" {% endif %}>
        <p {% ifequal forloop.counter 3 %} style="font-weight:bold;" {% endifequal %}>
            编号:{{ forloop.counter0 }}  成绩:{{ i }}
        </p>
    {% empty %}
        a变量为空
    {% endfor %}
    

    2.4注解

    web形式注解:<!--注解内容-->,需注意不能定义错误的标签语法
    django框架中的注解{#注解内容#} 单行注解;{% comment %}注解内容{% endcomment %} 多行注解

    3过滤器

    将内容进行渲染再展示{{ a | 过滤器 }}
    safe:解析变量中的样式
    default:默认值
    upper:/lower:变量大小写的转换
    capfirst:首字母大写
    random:随机取字符
    first/last:取出变量中的首/尾元素
    length:计算变量的长度
    add:变量的加减

    <p>{{ b | safe }}</p>
    <!--全部转大写-->
    <p>{{ 'python' | upper }}</p>
    <!--全部转小写-->
    <p>{{ 'PYthOn' | lower }}</p>
    <!--内容加1-->
    <p>{{ 4 | add:'1' }}</p>
    <!--内容减1-->
    <p>{{ 4 | add:'-1' }}</p>
    <!--首字母大写-->
    <p>{{ 'python' | capfirst }}</p>
    <!--空默认为无-->
    <p>{{ '' | default:'无' }}</p>
    <!--解析第一个字符-->
    <p>{{ 'python' | first }}</p>
    <!--解析最后一个字符-->
    <p>{{ 'python' | last }}</p>
    <!--随机取一个字符-->
    <p>{{ 'python' | random }}</p>
    

    4继承

    父模板:定义好可以被子模板动态填充内容的block块
    子模板:继承于父模板,并实现填充block块的内容
    定义block块的名字不能重复
    继承:{% extends '父模板' %}
    动态填充block块的内容:{% block 名称 %}{% endblock %}
    获取父模板中块之前定义好的内容:{{ block.super }}

    <!--定义模板-->
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        {% block js %}
        {% endblock %}
    </head>
    <body>
        {% block content %}
        {% endblock %}
    </body>
    </html>
    <!--子模板继承父模板内容-->
    {% extends 'base.html' %}
    {% block js %}
        <script src="https://code.jquery.com/jquery-3.0.0.min.js"></script>
    {% endblock %}
    

    5路由urls

    5.1配置路由分发

    django项目中urls.py文件中配置
    path('app/',include('app.urls')), 新版本django
    path('app/',include('app.urls', 'app')) 老版本django

    5.2接收参数

    每个应用下对应的urls.py文件中配置

    urlpatterns = [
        re_path('index/(\d+)/', views.index), #路由匹配的值为int类型
        path('index/<int:id>/', views.index), #路由匹配的值为int类型
        path('name/<str:name>/', views.get_name), #路由匹配的值为字符类型
        path('get_uuid/', views.get_uuid), #路由匹配的值为uuid类型
        path('g_uuid/<uuid:uid>/', views.g_uuid),
        path('path/<path:phth>/', views.get_path), #路由匹配的值为path类型
        # 接收多个参数
        path('params/<int:year>/<int:month>/<int:day>/', views.params),
        re_path('params/(\d+)/(\d+)/(\d+)/',views.params),
        re_path('params/(?P<year>\d+)/(?P<month>\d+)/(?P<day>\d+)/',views.params)
    ]
    
    def params(request, year, month, day):
        return HttpResponse('%s年%s月%s日' % (year,month,day))
    
    def get_uuid(request):
        uid = str(uuid.uuid4())
        return HttpResponse(uid)

    相关文章

      网友评论

          本文标题:day45-模板设计

          本文链接:https://www.haomeiwen.com/subject/mzfprqtx.html