Home >  > Django笔记

Django笔记

0

Django简介

Django是一个基于MVC构造的框架。但是在Django中,控制器接受用户输入的部分由框架自行处理,所以 Django 里更关注的是模型(Model)、模板(Template)和视图(Views),称为 MTV模式。它们各自的职责如下:

层次 职责
模型(Model),即数据存取层 处理与数据相关的所有事务: 如何存取、如何验证有效性、包含哪些行为以及数据之间的关系等。
模板(Template),即业务逻辑层 处理与表现相关的决定: 如何在页面或其他类型文档中进行显示。
视图(View),即表现层 存取模型及调取恰当模板的相关逻辑。模型与模板的桥梁。

从以上表述可以看出Django 视图不处理用户输入,而仅仅决定要展现哪些数据给用户,而Django 模板 仅仅决定如何展现Django视图指定的数据。或者说, Django将MVC中的视图进一步分解为 Django视图 和 Django模板两个部分,分别决定 “展现哪些数据” 和 “如何展现”,使得Django的模板可以根据需要随时替换,而不仅仅限制于内置的模板。

至于MVC控制器部分,由Django框架的URLconf来实现。URLconf机制是使用正则表达式匹配URL,然后调用合适的Python函数。URLconf对于URL的规则没有任何限制,你完全可以设计成任意的URL风格,不管是传统的,RESTful的,或者是另类的。框架把控制层给封装了,无非与数据交互这层都是数据库表的读,写,删除,更新的操作。在写程序的时候,只要调用相应的方法就行了,感觉很方便。程序员把控制层东西交给Django自动完成了。 只需要编写非常少的代码完成很多的事情。所以,它比MVC框架考虑的问题要深一步,因为我们程序员大都在写控制层的程序。现在这个工作交给了框架,仅需写很少的调用代码,大大提高了工作效率。

http://blog.51cto.com/12814931/2123622
Django框架全面讲解
https://www.cnblogs.com/LiCheng-/p/6920900.html

https://github.com/APSL/puput

一、Models
1.固定选项
如果要用固定的选项,可以用:

category = models.CharField(default="pxjg",verbose_name="培训机构",max_lenght=20, choices=(("pxjg","培训机构"),(“pxgr”,"培训个人"),("pxxx","培训学校")))

2、charField一定要设定max_lenght,textField不需要输入长度。
可以加unique=true

3、邮箱、URL
email = models.EmailField(max_length=50,verbose_name="邮箱")
url = models.URLField(max_length=200,verbose_name="访问地址")
download = models.FileField(upload_to="course/resource/%Y/%M",verbose_name="资源文件",max_length=100)

3、上传图片
看下面“upload_to=”的具体配置。

需要在项目根目录建立一个media文件夹,并在settings.py中添加如下代码:

在模板文件中用这样的方式调用。

要使Media_url生效,需要配置settings.py文件

用上面的调用,在前端还是显示不出来,还要加入以下代码:

from Mxonline.setting import MEDIA_ROOT

配置访问处理函数:

4、django的model中,HTMLField字段、DecimailField字段(DecimailField可以明确控制多少位,floatFiedl的位数多了去了)。

5、修改models时,只有更改到数据库,才需要migrate,仅仅影响到python层面的,比如default,blank,不影响数据库结构,不需要migrate。

下表列出了所有Django内置的字段类型,但不包括关系字段类型(字段名采用驼峰命名法,初学者请一定要注意):

二、URL.py

(一)URL的配置

提取URL中的变量
提取所有值,放到active_code当中。

(二)利用名称配置url

在模板中使用url的name进行配置,这样修改url的地址的时候,不用再修改模板中的配置。

三、views.py

1、基于类的配置方法
首先要import进来

from django.views.generic.base import view

2、首页显示多个分类的商品

3、用get查询,查不到会抛异常,用filter不会。

四、模板
模板就4个东西:变量、标签、过滤器、注释。

五、注册后台

六、Debug
F6 单步调试、F8全速前进。

七、CSRF攻击
当我们在views.py中编写逻辑,获取表单中用户输入的用户名、密码等。

不过直接这样写会报错。因为django有一个跨站请求保护机制,只需要在模板文件中加入 {% csrf_token %}这一行代码即可。

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>首页</title>
</head>
<body>
    <h1>用户输入:</h1>
    <form action="/index/" method="post">
        {% csrf_token %}   <!--加入这行 -->
        <input type="text" name="username" />
        <input type="password" name="password" />
        <input type="submit" value="提交" />
    </form>
</body>
</html>

八、XSS攻击
尽量采用post而非get提交表单。

九、设置发送邮件

然后调用send_mail函数。

本文暂无标签

发表评论

*

*