zoukankan      html  css  js  c++  java
  • python之路(18)django框架入门(views,templates)

    前言

      Django框架下的views,templates


     views视图函数的属性方法

    http下有两个核心类:HttpResquest类和HttpResponse类

    requesr
        request.path : 当前url访问的路径
        request.get_full_path() : url带参数的全路径
        request.method : 返回请求的方式,即GET或POST
        request.POST.get("") / GET.get("") : 得到value
    
    redirect
        redirect(".html") : 跳转html界面,需要导入redirect
    
    render
        render(request,".html",{key:value}) : 渲染templates
        render(request, ".html", locals()) : 将函数中的所有变量传给模板
        render_to_response(".html",{key:value}) : 同render(),不需要request参数,要导入render_to_response

    templates模板语法

    模板的组成:html代码+逻辑控制语句

    变量{{var_name}}
        {{var_name}} : 用两个大括号来引用变量
        {{var_name.1}} : 用变量.下标的形式显示列表
        {{var_name.key}} : 用变量.key的形式显示字典,同样可以显示类属性
    
    过滤器{{obj|filter:param}}
        {{var_name|first}} : 取字符串的第一个
        {{var_name|length}} : 取字符串的长度
        {{var_name|slice:-1}} : 切片
        {{var_name|urlencode}} : 进行url编码
        {{var_name|add:50}} : 给变量加上相应的值
        {{var_name|addslashes }} : 给变量引号前加入相应的值
        {{var_name|capfirst }} : 首字母大写
        {{var_name|cut:" " }} : 移除指定的字符
        {{var_name|date:"Y-m-d" }} : 自定制时间格式(Y年,m月,d天)
        {{var_name|default:" " }} : 如果变量没空,返回默认值
        {{ name|default_if_none:" " }} : 如果变量为none,返回默认值
        {{var_name|safe}} : 如果传递为html语言,并需要别渲染,就要加上safe
    
    标签(tag){% tags %} {% endtags %}
        {% url '' %} : 引用路由配置的地址
        {% autoescape off  %}{% endautoescape %} : 关闭安全机制,直接渲染html语句,同{{var_name|safe}}
        {% if %} {% elif %} {% else %} {% endif %}: 判断
        {%for value in var_name %} {% empty %}{% endfor %} : 遍历,value为值
                {{forloop.counter}}显示索引,默认1开始,
                {{forloop.counter0}默认0开始
                {{forloop.revcounter}}倒数
                {{forloop.frist}}当第一次遍历为true
                {% empty %} : 如果为空则进入
        { % csrf_token %} : post数据提交安全机制,添加钥匙
        {% with simpename = longname%} {% endwith %}: 用简单的名字代替复杂的名字
        {% verbatim %} {% endverbatim %}: 禁止render
        {% load %} : 加载标签库

    自定制filter和simple_tag

      a、在app中创建templatetags模块

      b、创建任意.py文件,如:my_tags.py

    from django import template
    from django.utils.safestring import mark_safe
    
    register = template.Library()  #register的名字是固定的
    
    @register.filter #装饰器
    def fliter_multi(x,y):
        return y
    
    @register.simple_tag
    def simple_tag_multi(x,y):
        return x*y
    myTag.py

        c、在使用自定制simple_tag和filter的gtml文件中导入my_tags.py : {% load my_tags.py%} 顶行写

        d、使用filter和simple_tag

    {% load myTag %}
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>index</title>
    </head>
    <body>
    
    {# 传参数只能传一个#}
    {{ var_name|fliter_multi:'l'}}
    
    {# 不能用在控制语句之中#}
    {% simple_tag_multi 3 5 %}
    
    </body>
    </html>
    index.html

      e、在settings中INSTALLED_APPS配置当前app,不然django无法找到自定义的simple_tag

    继承标签extend和添加标签include

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    
        <div>父界面</div>
    
    
        <div>
            {% block content %}
    
                {# 这里是子界面 #}
            {% endblock %}
    
        </div>
    </body>
    </html>
    father.html
    {% extends "father.html" %}
    {# 继承父界面的所有内容 #}
    
    
    {% block content %}
         {# 子界面内容 #}
    {% endblock %}
    son.html
  • 相关阅读:
    JS保留两位小数
    xml,json,html格式化工具
    SQL查询递归
    javascript验证价格输入
    类库说明文档生成器
    转换数据库时间字段格式函数
    mysql python 汉字乱码的解决方案
    Python list 按元素属性排序, key 的用法
    原以为会不同的
    libsvm 文本分类(分两类)(实验结果)直接调用Libsvm工具
  • 原文地址:https://www.cnblogs.com/shuzhixia/p/11031001.html
Copyright © 2011-2022 走看看