django数据类型与mysql数据类型比较
参数
max_length=32null=True : 可以设置为nulldb_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 models admin.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中提供验证 URLSlugField(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验证
- settings中,打开注释 'django.middleware.csrf.CsrfViewMiddleware',
- 表单中,开启csrf_token
如上, 全站都会进行csrf验证
关闭部分的csrf验证:
- settings中,打开注释 ====》'django.middleware.csrf.CsrfViewMiddleware',
- views中,引入如下函数
from django.views.decorators.csrf import csrf_exempt @csrf_exemptdef csrf1(request):if request.method == 'GET': return render(request, 'csrf1.html')else: return HttpResponse('ok')
如上, 即便全局开启验证,但是可以使用装饰器进行特殊处理,不使用
开启部分的CSRF验证:
- settings中,注释 ====》#'django.middleware.csrf.CsrfViewMiddleware',
- views中,引入如下函数
from django.views.decorators.csrf import csrf_protect@csrf_protectdef 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): passdef 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
Title