热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Djangoadmin、基本数据类型、csrf攻击

django数据类型与mysql数据类型比较参数max_length32nullTrue:可以设置为nulldb_indexTrue:设置索引de

django数据类型与mysql数据类型比较

1659176-20190717162419665-1437184460.png

参数

max_length=32
null=True : 可以设置为null
db_index=True : 设置索引
default : 设置默认值
unique : 设置唯一索引db_column: 设置一个列名unique_together: 联合唯一索引
index_together :普通联合索引
class Meta:unique_together = (('money', 'us_id'),....)index_together = (('money', '')....)

django-admin

django自带的管理后台系统
命令生成:python3 manage.py createsuperuser
想要管理自己生成的表:admin.py:from app01 import modelsadmin.site.register(models.UserInfo)django-admin中的列类型:
EmailField(CharField):- 字符串类型,Django Admin以及ModelForm中提供验证机制
IPAddressField(Field)- 字符串类型,Django Admin以及ModelForm中提供验证 IPV4 机制
GenericIPAddressField(Field)- 字符串类型,Django Admin以及ModelForm中提供验证 Ipv4和Ipv6
- 参数:protocol,用于指定Ipv4或Ipv6, 'both',"ipv4","ipv6"unpack_ipv4, 如果指定为True,则输入::ffff:192.0.2.1时候,可解析为192.0.2.1,开启刺功能,需要protocol="both"
URLField(CharField)- 字符串类型,Django Admin以及ModelForm中提供验证 URL
SlugField(CharField)- 字符串类型,Django Admin以及ModelForm中提供验证支持 字母、数字、下划线、连接符(减号)
CommaSeparatedIntegerField(CharField)- 字符串类型,格式必须为逗号分割的数字
UUIDField(Field)- 字符串类型,Django Admin以及ModelForm中提供对UUID格式的验证
FileField(Field)djagno-admin中的参数 :verbose_name Admin中显示的字段名称 blank Admin中是否允许用户输入为空editable Admin中是否可以编辑help_text Admin中该字段的提示信息choices Admin中显示选择框的内容,用不变动的数据放在内存中从而避免跨表操作choices = ((1, '男'),(2, '女'))gender = models.IntegerField(choices=chocies)id name gender (男女)

CSRF攻击

开启全局的csrf验证

  1. settings中,打开注释 'django.middleware.csrf.CsrfViewMiddleware',
  2. 表单中,开启csrf_token

{% csrf_token %}

如上, 全站都会进行csrf验证

关闭部分的csrf验证:

  1. settings中,打开注释 ====》'django.middleware.csrf.CsrfViewMiddleware',
  2. views中,引入如下函数

from django.views.decorators.csrf import csrf_exempt@csrf_exempt
def csrf1(request):
if request.method == 'GET':return render(request, 'csrf1.html')
else:return HttpResponse('ok')

如上, 即便全局开启验证,但是可以使用装饰器进行特殊处理,不使用

开启部分的CSRF验证:

  1. settings中,注释 ====》#'django.middleware.csrf.CsrfViewMiddleware',
  2. views中,引入如下函数

from django.views.decorators.csrf import csrf_protect
@csrf_protect
def csrf1(request):if request.method == 'GET':return render(request, 'csrf1.html')else:return HttpResponse('ok')

如上, 即便全局关闭验证,但是可以使用装饰器进行特殊处理

CBV:

若是CBV:

from django.utils.decorators import method_decorator
@method_decorator(csrf_protect, name='get')
class User(View):
def get(self, request):pass
def post(self, request):pass

ajax:

csrftoken = $('input[name="csrfmiddlewaretoken"]').val()
$.ajax({
type:"POST",
url : '/xxxx/',
data: {"name":'xxxx'},
headers : {'X-CSRFToken': token},
success: function(){
console.log(data)
}
})
# 第一种
data:{'csrfmiddlewaretoken':$('[name="csrfmiddlewaretoken"]').val()}
# 第二种
data:{'csrfmiddlewaretoken':'{{ csrf_token }}'}

xxx.html





{% csrf_token %}



转:https://www.cnblogs.com/huanghongzheng/p/11201749.html



推荐阅读
author-avatar
一个有点自卑的小孩
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有