zoukankan      html  css  js  c++  java
  • django学习笔记(一)

    1) 新建一个django项目, django-admin.py startproject mysite (ubuntu下django-admin不用带.py后辍)。

    2) 启动web服务,python manage.py runserver。

    3) views.py的典型格式:

    from django.http import HttpResponse

    def hello(request):
    return HttpResponse("Hello world")

    4) 在python语言中,字典类型的对象,其属性不能通过点号直接引用,只能通过[]或get()方法来引用,但在模板引擎中,字典类型对象却是可以通过点号引用的。

    句点查找规则可概括为: 当模板系统在变量名中遇到点时,按照以下顺序尝试进行查找:

    • 字典类型查找 (比如 foo["bar"] )

    • 属性查找 (比如 foo.bar )

    • 方法调用 (比如 foo.bar() )

    • 列表类型索引查找 (比如 foo[bar] )



    5) 因为在模板中点号会依次尝试查找不同的用法,有可能无意中调用对象的方法而不是属性,引起意料外的危险。避免这种危险,需要在声明方法时,给方法定义alters_data=True,这样,在模板系统中就不会用方法调用的方式来解析点号了。

    def delete(self):
    # Delete the account
    delete.alters_data = True

    6) {% if %} 标签不允许在同一个标签中同时使用 and 和 or ,因为逻辑上可能模糊的。多个and或多个or是可以的,但不能混用。也不能用()来组合逻辑运算符,如果一定要组合,你可以将逻辑放到c里去判断,不要放到v里。或者你也可以多嵌套几层if。

    7) 有{% else %},但没有 {% elif %} 标签, 请使用嵌套的`` {% if %}`` 标签来达成同样的效果。

    8) for在模板系统中的用法。在标签中在入reversed,可以使列表反向迭代。使用{% empty %}分句,还能给for加上列表为空的分支。

    <ul>
    {% for athlete in athlete_list %}
    <li>{{ athlete.name }}</li>
    {% endfor %}
    </ul>


    {% for athlete in athlete_list reversed %}
    ...
    {% endfor %}


    {% for athlete in athlete_list %}
    <p>{{ athlete.name }}</p>
    {% empty %}
    <p>There are no athletes. Only computer programmers.</p>
    {% endfor %}

    9) Django不支持退出循环操作。 如果我们想退出循环,可以改变正在迭代的变量,让其仅仅包含需要迭代的项目。 同理,Django也不支持continue语句,我们无法让当前迭代操作跳回到循环头部。

    10) 在每个`` {% for %}``循环里有一个称为`` forloop`` 的模板变量。这个变量有一些提示循环进度信息的属性。

    forloop.counter\forloop.counter0\forloop.revcounter\forloop.revcounter0\forloop.first\forloop.last\forloop.parentloop

    11) django不希望在模板里有太多逻辑判断,所以不支持python的语法。但模板提供常用的比较功能,用{% ifequal %}和{% endifequal %}。和 {% if %} 类似, {% ifequal %} 支持可选的 {% else%} 标签。值得注意的是,只有模板变量,字符串,整数和小数可以作为 {% ifequal %} 标签的参数,其他任何类型,例如Python的字典类型、列表类型、布尔类型,不能用在 {% ifequal %} 中。

    12)模板中单行注释使用 {# #},多行注释用{% comment %}和{% endcomment %}。

    {# This is a comment #}
    {% comment %}
    This is a
    multi-line comment.
    {% endcomment %}

    13)模板中有过滤器的概念。过滤器使用管道字符。常用的过滤器有:addslashes、date、length、
    pluralize(如果是英文,会自动根据单复数决定是否添加成复数形式)、lower、yesno

    <p>{{person.is_available | yesno: "Yes,No"}}</p>



    14)渲染模板的快捷方法。
    from django.shortcuts import render_to_response
    import datetime

    def current_datetime(request):
    now = datetime.datetime.now()
    return render_to_response('current_datetime.html', {'current_date': now})

    15) locals()方法可以简化渲染时需传递的字典。

    def current_datetime(request):
    now = datetime.datetime.now()
    return render_to_response('current_datetime.html', {'current_date': now})

    和以下方法效果等同

    def current_datetime(request):
    current_date = datetime.datetime.now()
    return render_to_response('current_datetime.html', locals())

  • 相关阅读:
    DataTable.AcceptChanges方法有何用处
    ItemArray DataRow对象的RowState和DataRowVersion属性特点
    C#中MessageBox用法大全(附效果图)
    tp5数据库操作 模型层
    07-11 Linux命令操作
    Thinkphp模板标签if和eq的区别和比较
    TP3.2单字母函数
    0629-TP整理四(create(),success(),error(),U())
    0627-TP整理三(对表的操作,数据的显示)
    0626-TP整理二(调试模式,空操作,跨控制器调用,跨方法跳转--redirect(),框架语法,创建model模型)
  • 原文地址:https://www.cnblogs.com/cly84920/p/4426700.html
Copyright © 2011-2022 走看看