M
Published on
· Last modified on
· Public

Django 学习笔记

CH02 入门

  1. 使用django-admin startproject mysite开始你的新项目
  2. python manage.py runserver [0.0.0.0:8000]来启动服务,默认端口是8000,后面0.0.0.0表示任意地址都可以访问,如果py代码作了修改,服务器会自动重新加载

CH03 视图和URL配置

  1. 一般新建一个views.py文件来处理视图
  2. 一个视图就是一个python的函数,这个函数第一个参数类型是HttpRequest,返回HttpResponse
  3. urls.py文件相当于rewrite,一般在startproject时自动生成
  4. 注意文件上面要import views新增的函数名
  5. 一个请求的访问是从setting.py开始,其中指定了ROOT_URLCONF=mysite.urls,这个指定是说从mysite/urls.py匹配url,在urls.py中加入views

CH04 模板Template

  1. {{ variable }}是变量
  2. {% if %}是tag,例如有if, for
  3. {{date | date:"F j,y"}}过滤器
  4. {% for X in Y [reversed] %}...[{%empty%}do something]{% endfor %}
  5. for相关变量
    1. {%forloop.counter%} 从1开始的变量
    2. {%forloop.counter0%} 从0开始的变量
    3. {%forloop.first%} {%forloop.last%} 是否为第一个或最后一个元素,用来生成a1|a2|a3很有用(判断不是最后一个则输出|)
  6. 注释用{# comment #}
  7. 过滤器是dj提供一些函数,用管道连接符连接,可以多个连起来如{{ my_list|first|upper }}
  8. 判断相等和不相等{% ifequal %} {% ifnotequal %}
  9. 模板路径注意如果用os.path.join的话,第二个变量不用/,参考join函数,注意BASE_DIR是mysite目录再上层
  10. {% block %} 告诉模板引擎这部分内容可以重载 {% extends %} 来继承某个模板
  11. 一般模板继承有三层:1为整站网络,2为各区域块的风格,3为具体某个页面

CH05 模型

  1. 可以使用python manage.py shell启动py来测试,这个和直接用python有点不同是他包含了一些dj自己的环境变量
  2. 这章也介绍了数据库要怎么配置,建议这个看官方文档,因为原来的文档过时了

CH07 表单

  1. view的函数第一个参数request有一些属性或方法,如request.path显示"/hello/",request.get_host()显示'127.0.0.1:8000',request.get_full_path()显示"/hello/?print=true",request.is_secure()是否用https访问,request.META包含这次请求的所有header信息
  2. 表单的action可以写为action="",这样将请求发送到自身的url
  3. dj有个form类,可以用来做许多表单的验证工作,在1.0版本时,form类是个新重写的类
  4. 社区的惯例是创建一个form.py文件,from django import forms subject = forms.CharField() email = forms.EmailFidld(required = False) required表示email参数不是必须,然后python manage.py shell,将刚才新建的类导入,import contact.forms f = ContactForm() print f就能生成HTML代码,注意显示是没有闭合的,也可以只显示一项,print f['email']
  5. 更简单的生成方法,f = ContactForm({'subject' : 'Hello', 'email' : 'xx@com', 'message' : 'World'}),这里对于非必填字段可以留空,使用f.is_valid()检查是否合法
  6. f['message'].errors显示某个字段出错信息,f.errors是每个字段出错信息的字典
  7. 如果form合法,它就会有一个f.cleaned_data的字典,包含验证过并且处理成相应的python类型的值
  8. 前面那么些个xxxField还是看文档有什么方法吧
  9. 可以自定义过滤规则,函数叫clean_xxxx(self)