python web django 2nd level -- 待更新
练习代码位置
实例代码位置 --> app: myblog
Form
利用Form表单验证,自己写的html
思路:
新建一个类 LoginForm(forms.Form)
新建对象 obj = LoginForm(request.Post)
常用方法:
obj.is_valid()
obj.clean()
obj.errors.as_json()
验证字段类型: --- 和models的成员基本一致
CharField()
IntegerField()
EmailField()
字段参数:
required
max_length min_length
自定义验证器:
validators=[func] # 自定义验证类型,如果不合法,直接raise就好 注意传过去的数据类型
个性化提示:
error_messages={"required":"不能为空","invalid":"不合法哦"}
个性化外观
mychoices = ((1,"female"),(1, "male"),)
widget=forms.Select(choices=mychoices, attrs={"k1":"v1"})
自动生成html
思路:
1、 和上面一样
2、 把loginForm_obj 传给前端,前端自己拿数据
{% obj.username %}
{%obj.password %}
{%obj.errors.username.0 %}
{%obj.errors.password.0 %}
ModelForm
CSRF
网站不允许直接post数据,需要先get一次数据,返回的时候网站返回一个token给页面,页面下次访问的时候会带着token过来
form 方式
外兜
这种比较简单,直接提交表单就行了
因为表单里面直接有一个hidden的input widget
ajax 方式
内兜
需要自己去获取cookie,然后提交给网站
注意要导入jquery and js.cookie.js
<script src="/static/plugin/jquery/jquery-1.8.0.js"></script>
<script src="/static/plugin/jquery/jquery.cookie.js"></script>
var csrftoken = $.cookie('csrftoken');
function csrfSafeMethod(method) {
// these HTTP methods do not require CSRF protection
return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
}
//每次ajax请求之前都会执行这个函数
$.ajaxSetup({
beforeSend: function(xhr, settings) {
if (!csrfSafeMethod(settings.type) && !this.crossDomain) {
xhr.setRequestHeader("X-CSRFToken", csrftoken);
}
}
});
cookie and session
概述
cookie 存在前端浏览器里面的一个字符串
默认不能跨域名访问
session 存在后端服务器上的一个状态信息 e.g. 登录状态
cookie
设置:
obj = render(reqeust, "/static/myblog/cookie.html")
obj.set_ookie("k1","v1") # 把cookie写入html中
obj.set_cookie(key,value, max_age, path="/")
max_age: 过期时间, 单位秒
path: 该cookie只在path下面能使用,默认是 / ,对该域名全局生效
获取:
cookie_cli = request.COOKIES # 获取到的是一个字典
session
概述:
session 依赖于cookie实现功能,会把session_id 利用cookie的渠道写入浏览器,敏感信息放到服务上
session_id 对开发者隐藏,不用管, session_id 唯一标识一个浏览器
django 默认支持session,默认存储到数据库中 table: django_session 过期时间 两周
使用:
当成一个字典使用
request.session["user"] = "yangli"
def request.session["user"]
request.session.delete(request.session.session_key)
session 存放位置配置 settings.py 配置文件即可
db
cache
file
cached_db
signed_cookies
- level1
- level2
- level2-1
- level2-2
- level3
python web django 2nd level -- 待更新的更多相关文章
- python web -- django
一. 安装 django $ pip install django (env)$ python >> import django >> django.VERSION >& ...
- python web——Django架构
环境:windows/linux/OS 需要的软件:Firefox 浏览器(别的也可以 不过firfox和python的webdriver兼容性好) git版本控制系统(使用前要配置 用户 编辑器可以 ...
- python web django base skill
web框架本质 socket + 业务逻辑 框架实现socket tonado node.js 使用WSGI实现socket django flask 自己实现框架思路 wsgiref socket ...
- Nginx+Python+uwsgi+Django的web开发环境安装及配置
Nginx+Python+uwsgi+Django的web开发环境安装及配置 nginx安装 nginx的安装这里就略过了... python安装 通常系统已经自带了,这里也略过 uwsgi安装 官网 ...
- Ubuntu+Django+Nginx+uWSGI+Mysql搭建Python Web服务器
Ubuntu+Django+Nginx+uWSGI+Mysql搭建Python Web服务器 闲着无聊的时候部署了一个Django项目玩,用vm虚拟机部署的. 准备工作 我使用的系统是Ubuntu16 ...
- python三大web框架Django,Flask,Flask,Python几种主流框架,13个Python web框架比较,2018年Python web五大主流框架
Python几种主流框架 从GitHub中整理出的15个最受欢迎的Python开源框架.这些框架包括事件I/O,OLAP,Web开发,高性能网络通信,测试,爬虫等. Django: Python We ...
- Django,Flask,Tornado三大框架对比,Python几种主流框架,13个Python web框架比较,2018年Python web五大主流框架
Django 与 Tornado 各自的优缺点Django优点: 大和全(重量级框架)自带orm,template,view 需要的功能也可以去找第三方的app注重高效开发全自动化的管理后台(只需要使 ...
- 全面解读Python Web开发框架Django,利用Django构建web应用及其部署
全面解读Python Web开发框架Django Django是一个开源的Web应用框架,由Python写成.采用MVC的软件设计模式,主要目标是使得开发复杂的.数据库驱动的网站变得简单.Django ...
- [Python] 利用Django进行Web开发系列(一)
1 写在前面 在没有接触互联网这个行业的时候,我就一直很好奇网站是怎么构建的.现在虽然从事互联网相关的工作,但是也一直没有接触过Web开发之类的东西,但是兴趣终归还是要有的,而且是需要自己动手去实践的 ...
随机推荐
- 意外发现--http-server使用
http-server 在很多情况下,需要在本地开启http服务器来测试.所以就需要一个简单的省事好用的http服务器.以前的时候,都是使用php的本地环境,但是,自从学了nodejs,发现了http ...
- Map merge
将新的值赋值给map(如果不存在)或更新具有给定key的现有值. Map<Integer, Integer> map = new HashMap<>(); for (Integ ...
- mysql慢日志分析pt-query-digest
一.pt-query-digest 安装pt-query-digest yum install perl-DBI yum install perl-DBD-MySQL yum install perl ...
- 【16】LRUChache
题目 LRU 思路 LRU 大家都不陌生,操作系统的作业做过,思路就是一旦添加或者访问某个元素,则将其的"访问属性"置零,而其他元素的访问属性统统减一,这样一来,访问属性最小的元素 ...
- npx工具
参考文章:阮一峰的网络日志 - npx 使用教程 npx的作用 1.调用项目模块 即node_modules目录下的模块,而不用加上相对路径 $ npx mocha --version 原本应该是这样 ...
- 【转】C#路径中获取文件全路径、目录、扩展名、文件名称
C#路径中获取文件全路径.目录.扩展名.文件名称 原文链接:https://www.cnblogs.com/JiYF/p/6879139.html 常用函数 需要引用System.IO 直接可以调 ...
- java.util.UUID工具类
生成数据表的主键Id会用到此工具类 /** * <获取主鍵> * <获取32位UUID> * @return * @see [类.类#方法.类#成员] */ public st ...
- appium---webview(H5)元素定位
我们在做UI自动化的时候,肯定需要元素定位,那么webview(H5)的元素怎么定位呢? webview定位方法 方法一: 1.打开chrome浏览器,输入chrome://inspect 2.连接手 ...
- Python的深拷贝、浅拷贝
浅拷贝 定义:浅拷贝只是对另外一个变量的内存地址的拷贝,这两个变量指向同一个内存地址的变量值. 浅拷贝的特点: 公用一个值: 这两个变量的内存地址一样: 对其中一个变量的值改变,另外一个变量的值也会改 ...
- 在使用VS过程中关于Javascript没有智能提示的解决方法
问题:编写基本Script代码没有问题,但是在编写DOM代码时候没有智能提示.也就是在编写一般javascript代码时候没有问题,但是要写DOM代码的时候发现没有智能提示,如document等都需要 ...