码迷,mamicode.com
首页 > 其他好文 > 详细

modelform跨站请求

时间:2020-07-23 16:03:33      阅读:59      评论:0      收藏:0      [点我收藏+]

标签:textinput   modelform   ade   script   orm   信息   control   att   属性   

csrf 跨站请求伪造

 1 ajax({
 2     
 3     data:{csrfmiddlewaretoken:$(‘[name=csrfmiddlewaretoken]‘).val(),
 4             // csrfmiddlewaretoken:‘{{ csrf_token }}‘,
 5         }
 6 })
 7 ajax({
 8     
 9     url:‘/test/‘,
10     type:‘post‘,
11     headers:{
12         "X-CSRFToken": $.cookie(‘csrftoken‘),
13     },
14 })

jquery操作cookie,文件地址http://plugins.jquery.com/cookie/

https://www.cnblogs.com/clschao/articles/10480029.html

 1 <script src="{% static ‘jquery.js‘ %}"></script>

2 <script src="{% static ‘jquery.cookie.js‘ %}"></script> 

同源机制

 1 浏览器的一个安全机制,非同源不允许直接互相访问,同源:协议,域名(ip地址),端口号三项相同才是同源
 2 
 3 简单请求和复杂请求
 4 简单请求:
 5 (1) 请求方法是以下三种方法之一:(也就是说如果你的请求方法是什么put、delete等肯定是非简单请求)
 6     HEAD
 7     GET
 8     POST
 9 (2)HTTP的头信息不超出以下几种字段:(如果比这些请求头多,那么一定是非简单请求)
10     Accept
11     Accept-Language
12     Content-Language
13     Last-Event-ID
14     Content-Type:只限于三个值application/x-www-form-urlencoded、multipart/form-data、text/plain,也就是说,如果你发送的application/json格式的数据,那么肯定是非简单请求,vue的axios默认的请求体信息格式是json的,ajax默认是urlencoded的。
15 
16 简单请求只发送一次请求
17 
18 
19 复杂请求(非简单请求) 发送两次请求
20 
21 
22 * 简单请求和非简单请求的区别?
23 
24    简单请求:一次请求
25    非简单请求:两次请求,在发送数据之前会先发一次请求用于做“预检”,只有“预检”通过后才再发送一次请求用于数据传输。
26 * 关于“预检”
27 
28 - 请求方式:OPTIONS
29 - “预检”其实做检查,检查如果通过则允许传输数据,检查不通过则不再发送真正想要发送的消息
30 - 如何“预检”
31      => 如果复杂请求是PUT等请求,则服务端需要设置允许某请求,否则“预检”不通过
32         Access-Control-Request-Method
33      => 如果复杂请求设置了请求头,则服务端需要设置允许某请求头,否则“预检”不通过
34         Access-Control-Request-Headers
35 
36 
37 请求的网站响应内容:
38 def index(request):
39     a = {name:chao}
40     ret = JsonResponse(a)
41     ret["Access-Control-Allow-Origin"] = "http://127.0.0.1:8000" #让http://127.0.0.1:8000这个网址的所有请求都能通过同源机制获得我给他响应的数据
42     ret["Access-Control-Allow-Origin"] = "*"
43     ret["Access-Control-Allow-Origin"] = "http://127.0.0.1:8000,http://127.0.0.1:8001,"
44     ret["Access-Control-Allow-Headers"] = "content-type" #让所有的请求数据格式都能通过同源机制,
45     return ret

modelform 通过model的属性自动翻译成form的属性,来进行form组件的工作

 1 from django.core.exceptions import ValidationError
 2 class BookModelForm(forms.ModelForm):
 3     # title=forms.CharField(max_length=15,min_length=6)
 4     
 5     class Meta:
 6         model = models.Book
 7         # fields=[‘title‘,‘publishs‘,]
 8         fields=__all__
 9         # exclude = [‘title‘,‘xx‘,]
10 
11         labels = {
12             title:书名,
13             publishDate:出版日期,
14         }
15         widgets = {
16             publishDate:forms.widgets.TextInput(attrs={type:date}),
17         }
18         error_messages = {
19             title:{required:不能为空,},
20             publishDate:{required:不能为空,}
21         }
22 
23     # def clean_title(self):
24     #     value = self.cleaned_data.get(‘title‘)
25     #     if ‘666‘ in value:
26     #         raise ValidationError(‘光喊6是不行的!!‘)
27     #     else:
28     #         return value
29     # def clean(self):
30     #     ...
31     #批量添加标签样式
32     def __init__(self,*args,**kwargs):
33         super().__init__(*args,**kwargs)
34         for field in self.fields.values():
35             field.widget.attrs.update({class:form-control})

 

modelform跨站请求

标签:textinput   modelform   ade   script   orm   信息   control   att   属性   

原文地址:https://www.cnblogs.com/ch2020/p/13365675.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!