Django笔记

来源:互联网 发布:c语言简单小程序游戏 编辑:程序博客网 时间:2024/06/06 10:50

django学习笔记

1 django-admin.py startproject project-name 新建项目
2 manage.py 一个实用的命令行工具,可让你以各种方式与该 Django 项目进行交互
3 python manage.py runserver 0.0.0.0:8000 启动服务
4 Django url() 可以接收四个参数,分别是两个必选参数:regex、view 和两个可选参数:kwargs、name
regex: 正则表达式,与之匹配的 URL 会执行对应的第二个参数view
view: 用于执行与正则表达式匹配的 URL 请求
kwargs: 视图使用的字典类型的参数
name: 用来反向获取 URL
5 if/else 标签
{% if condition1 %}
… display 1
{% elif condition2 %}
… display 2
{% else %}
… display 3
{% endif %}
6 {% if %} 标签接受 and , or 或者 not 关键字来对多个变量做判断 ,或者对变量取反( not ),支持嵌套
7 for 标签
{% for %} 允许我们在一个序列上迭代,循环语法是 for X in Y ,Y是要迭代的序列而X是在每一个特定的循环中使用的变量名称。
每一次循环中,模板系统会渲染在 {% for %} 和 {% endfor %} 之间的所有内容
{% for athlete in athlete_list %}
{{ athlete.name }}
{% endfor %}
给标签增加一个 reversed 使得该列表被反向迭代
可以嵌套
8 ifequal/ifnotequal 标签
{% ifequal %} 标签比较两个值,当他们相等时,显示在 {% ifequal %} 和 {% endifequal %} 之中所有的值
{% ifequal %} 支持可选的 {% else%} 标签
9 Django 注释使用 {# #}
10 模板过滤器可以在变量被显示前修改它,过滤器使用管道字符
{{ name|lower }}
过滤管道可以被* 套接* ,既是说,一个过滤器管道的输出又可以作为下一个管道的输入
{{ my_list|first|upper }}
有些过滤器有参数。 过滤器的参数跟随冒号之后并且总是以双引号包含
{{ bio|truncatewords:”30” }}
11 其它过滤器
addslashes : 添加反斜杠到任何反斜杠、单引号或者双引号前面
date : 按指定的格式字符串参数格式化 date 或者 datetime 对象
length : 返回变量的长度
12 {% include %} 标签允许在模板中包含其它的模板的内容
{% include “nav.html” %}
13 所有的 {% block %} 标签告诉模板引擎,子模板可以重载这些部分
14 django-admin.py startapp TestModel 创建 APP
15 Django规定,如果要使用模型,必须要创建一个app
16 类名代表了数据库表名,且继承了models.Model,类里面的字段代表数据表中的字段(name),数据类型则由CharField(相当于varchar)、DateField(相当于datetime), max_length 参数限定长度确定
17 python manage.py makemigrations TestModel 让 Django 知道我们在我们的模型有一些变更
18 python manage.py migrate TestModel 创建表结构
19 表名组成结构为:应用名_类名
20 尽管我们没有在models给表设置主键,但是Django会自动添加一个id作为主键
21 get方法
22 {% csrf_token %},csrf 全称是 Cross Site Request Forgery。这是Django提供的防止伪装提交请求的功能。POST 方法提交的表格,必须有此标签
23 post方法
24 Request 对象
path 请求页面的全路径,不包括域名,例如, “/hello/”
method 请求中使用的HTTP方法的字符串表示。全大写表示
GET 包含所有HTTP GET参数的类字典对象
POST 包含所有HTTP POST参数的类字典对象,服务器收到空的POST请求的情况也是有可能发生的。也就是说,表单form通过HTTP POST方法提交请求,但是表单中可以没有数据。因此,不能使用语句if request.POST来判断是否使用HTTP POST方法;应该使用if request.method == “POST”
REQUEST 该属性是POST和GET属性的集合体,但是有特殊性,先查找POST属性,然后再查找GET属性
COOKIES 包含所有cookies的标准Python字典对象。Keys和values都是字符串
FILES 包含所有上传文件的类字典对象。FILES中的每个Key都是标签中name属性的值. FILES中的每个value 同时也是一个标准Python字典对象,包含下面三个Keys:filename: 上传文件名,用Python字符串表示,content-type: 上传文件的Content type,content: 上传文件的原始内容,只有在请求方法是POST,并且请求页面中有enctype=”multipart/form-data”属性时FILES才拥有数据。否则,FILES 是一个空字典
META 包含所有可用HTTP头部信息的字典
user 是一个django.contrib.auth.models.User 对象,代表当前登录的用户,如果访问用户当前没有登录,user将被初始化为django.contrib.auth.models.AnonymousUser的实例,可以通过user的is_authenticated()方法来辨别用户是否登录

if request.user.is_authenticated():
# Do something for logged-in users.
else:
# Do something for anonymous users.

只有激活Django中的AuthenticationMiddleware时该属性才可用
session 唯一可读写的属性,代表当前会话的字典对象。只有激活Django中的session支持时该属性才可用
raw_post_data 原始HTTP POST数据,未解析过。 高级处理时会有用处

备注

目前只是直接记录而且还没写完,之后会继续修改。

原创粉丝点击