• 01 forms组件补充1

  • 02 forms组件补充2

  • 03 ModelForm回顾

  • 04 浏览器的历史

  • 05 jsonop实现跨域请求

  • 06 jsonop实现跨域请求2

  • 07 jsonop实现跨域请求的应用

  • 08 基于cors实现跨域请求

01 forms组件补充1

1.1 jsonp跨域;

1.2 cors跨域;

1.3 admin配置;

1.4 会议室预定作业;

1.5 上节回顾

  1.5.1 forms.ChoiceField(FIeld)

  1.5.2 forms.ModelChoiceField(ChoiceField)

  1.5.3 forms.ModelMultiField(ModelChoiceField)

1.6 Django的请求流程;

02 forms组件补充2

  • 基于render的渲染;
  • 基于自行编写模板的展示;

views.py;

from django.shortcuts import render

# Create your views here.
from django import forms class BookForm(forms.Form):
title = forms.CharField()
price = forms.FloatField() def addbook(request):
if request.method == "POST":
form = BookForm(request.POST)
if form.is_valid():
print(form.cleaned_data)
else:
print(form.errors)
form = BookForm()
return render(request, "addbook.html", locals())

addbook.html;

 <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<h1>添加书籍</h1>
<form action="" method="post">
{% csrf_token %}
<p>名称<input type="text" name="title"></p>
<p>价格<input type="text" name="price"></p>
<input type="submit">
</form>
<br>
<hr>
<form action="" method="post">
{% csrf_token %}
{{ form.as_p }}
<input type="submit">
</form>
</body>
</html>

03 ModelForm回顾

3.1 基于ModelForm进行错误信息的判断;

views.py;

from django.shortcuts import render, redirect

# Create your views here.
from .models import *
from django import forms
from django.forms import widgets
from django.forms import ModelForm
from django.forms import widgets as wid '''
class BookForm(forms.Form):
title = forms.CharField(max_length=32, label="书籍名称")
price = forms.DecimalField(max_digits=8, decimal_places=2, label="价格") # 999999.99
date = forms.DateField(label="日期",
widget=widgets.TextInput(attrs={"type": "date"})
)
# gender = forms.ChoiceField(choices=((1, "男"), (2, "女"), (3, "其他"),))
# publish = forms.ChoiceField(choices=Publish.objects.all().values_list("pk", "name"))
publish = forms.ModelChoiceField(queryset=Publish.objects.all())
authors = forms.ModelMultipleChoiceField(queryset=Author.objects.all())
''' class BookForm(ModelForm):
class Meta:
model = Book
fields = "__all__"
# fields = ["title", "price"]
labels = {
"title": "书籍名称",
"price": "价格",
"date": "书籍日期",
"publish": "出版社",
"authors": "作者",
}
widgets = {
"title": wid.TextInput(attrs={"class": "form-control"}),
"price": wid.TextInput(attrs={"class": "form-control"}),
"date": wid.TextInput(attrs={"class": "form-control", "type": "date"}),
"publish": wid.Select(attrs={"class": "form-control"}),
"authors": wid.SelectMultiple(attrs={"class": "form-control"}),
}
error_messages = {
"title": {"required": "不能为空"},
"price": {"required": "不能为空"},
"date": {"required": "不能为空"},
"publish": {"required": "不能为空"},
"authors": {"required": "不能为空"},
} def books(request):
book_list = Book.objects.all()
return render(request, "books.html", locals()) def add_book(request):
if request.method == "POST":
form = BookForm(request.POST)
if form.is_valid():
form.save() # 等价于,form.model.objects.create(request.POST)
return redirect("/books/")
else:
return render(request, "add.html", locals()) form = BookForm()
return render(request, "add.html", locals()) def edit_book(request, edit_book_id):
edit_book = Book.objects.filter(pk=edit_book_id).first()
if request.method == "POST":
form = BookForm(request.POST, instance=edit_book)
form.save() # edit_book.update(xxx===xxx)
return redirect("/books/")
form = BookForm(instance=edit_book)
return render(request, "edit.html", locals())

04 浏览器的历史

4.1 什么叫做域?什么叫做跨域?

4.2 同源策略;

同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。

同源策略,它是由Netscape提出的一个著名的安全策略。现在所有支持JavaScript 的浏览器都会使用这个策略。所谓同源是指,域名,协议,端口相同。当一个浏览器的两个tab页中分别打开来 百度和谷歌的页面当浏览器的百度tab页执行一个脚本的时候会检查这个脚本是属于哪个页面的,即检查是否同源,只有和百度同源的脚本才会被执行。如果非同源,那么在请求数据时,浏览器会在控制台中报一个异常,提示拒绝访问。

4.3 IE浏览器兼容性不好,比较好的浏览器Chrome、FireFox、Safari;

4.4 qishiye单位,不思进取,使用IE6,人家只要能用即可,社会的毒瘤,国家的诟病;

4.5 JavaScript与Java没有半毛钱关系,只是名称相似;

4.6 ECMA,规定了浏览器的标准;

05 jsonop实现跨域请求

5.1 比如tab标签网页之间不能进行通信;

5.2 同源,即相同的服务器发送请求;即协议+域名+端口相同;

06 jsonop实现跨域请求2

07 jsonop实现跨域请求的应用

08 基于cors实现跨域请求

Python-S9—Day85-ORM项目实战之forms组件以及Modelform补充、跨域请求及应用的更多相关文章

  1. Python爬虫开发与项目实战

    Python爬虫开发与项目实战(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1MFexF6S4No_FtC5U2GCKqQ 提取码:gtz1 复制这段内容后打开百度 ...

  2. Python爬虫开发与项目实战pdf电子书|网盘链接带提取码直接提取|

    Python爬虫开发与项目实战从基本的爬虫原理开始讲解,通过介绍Pthyon编程语言与HTML基础知识引领读者入门,之后根据当前风起云涌的云计算.大数据热潮,重点讲述了云计算的相关内容及其在爬虫中的应 ...

  3. 21.SpringCloud实战项目-后台题目类型功能(网关、跨域、路由问题一文搞定)

    SpringCloud实战项目全套学习教程连载中 PassJava 学习教程 简介 PassJava-Learning项目是PassJava(佳必过)项目的学习教程.对架构.业务.技术要点进行讲解. ...

  4. Vue-cli 创建的项目如何跨域请求

    感谢BeArchitect的技术支持 问题描述: 使用 Vue-cli 创建的项目,开发地址是 localhost:8023,需要访问 localhost:9000 上的接口 分析原因: 不同域名之间 ...

  5. python与 Ajax跨域请求

    同源策略 同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响.可以说Web是构建在同源策略基础之上的 ...

  6. vue-cli项目开发/生产环境代理实现跨域请求+webpack配置开发/生产环境的接口地址

    一.开发环境中跨域 使用 Vue-cli 创建的项目,开发地址是 localhost:8080,需要访问非本机上的接口http://10.1.0.34:8000/queryRole.不同域名之间的访问 ...

  7. Vue-cli 创建的项目配置跨域请求(通过反向代理)---配置多个代理--axios请求

    问题描述: 使用 Vue-cli 创建的项目,开发地址是 localhost:8080,需要访问 localhost:9000 或https://m.maoyan.com或http://image.b ...

  8. 本地Vue项目跨域请求本地Node.js服务器的配置方法

    前言:跨域请求是在本地开发时经常遇到的需求,也很简单,只是几句代码配置一下的问题.我初次配置跨域请求时由于官方的说明太简洁,找到的教程又落伍,调试了一番并没有解决问题,到最后解决问题,已花费了很多时间 ...

  9. python工业互联网监控项目实战5—Collector到opcua服务

    本小节演示项目是如何从连接器到获取Tank4C9服务上的设备对象的值,并通过Connector服务的url返回给UI端请求的.另外,实际项目中考虑websocket中间可能因为网络通信等原因出现中断情 ...

随机推荐

  1. 数据字典的设计--3.首页添加删除表格(JS实现)

    页面效果: JS代码: 1.添加表格 function insertRows(){ //获取表格对象 var tb1 = $("#dictTbl"); var tempRow = ...

  2. html常用的小技能

    在html中有很多常用小技能,记下来,下次直接看自己的,就不用四处找啦! 1.<li>标签去掉点号:list-style-type:none; 去掉前: 去掉后: 2.<li> ...

  3. 往ABAP gateway system上和Cloud Foundry上部署HTML5应用

    ABAP Gateway system 在我的公众号文章里有详细介绍:SAP Fiori应用的三种部署方式 用WebIDE部署 用Eclipse Team provider部署 执行report /U ...

  4. WCF的问题

    使用service调用WCF的时候,有时候会出现 其他信息: HTTP 无法注册 URL 进程不具有此命名空间的访问权限 这样的问题,这时候就需要进行如下尝试: 1,VS的管理权限使用管理员的权限. ...

  5. hdu-1532 Drainage Ditches---最大流模板题

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1532 题目大意: 给出有向图以及边的最大容量,求从1到n的最大流 思路: 传送门:最大流的增广路算法 ...

  6. ThreadLocal为什么要用WeakReference

    先上一张图看一下ThreadLocal的内部结构,每个Thread对象内部都维护了一个ThreadLocal.ThreadLocalMap 我们在上图看到的就是三个Thread对象内部格子的Threa ...

  7. CUDA直方图实例=CPU+GPU(global)+GPU(shared)

    项目打包下载链接 顺便批判下CSDN上传坑爹现象,好多次都是到了95%或者99%就不动了.我……

  8. Spring学习记录(一)

    1.Spring简介 Spring是一个轻量级的java开发框架.框架的主要优势之一就是分层架构,Spring使用基本的JavaBean,不仅限于服务器的开发.从简单性,可测试性和松耦合的角度而言,任 ...

  9. 开发中经常遇到的一些css样式问题

    1.经常会遇到子元素浮动了,父元素就会探索到一个合适的值现在值是0,就要清除浮动操 <div class="search clearfix"> <div clas ...

  10. 记录一下CSS outline-width 属性

    outline(轮廓)是绘制于元素周围的一条线,位于边框边缘的外围. outline-width指定轮廓的宽度. 注意: 请始终在outline-width属性之前声明outline-style属性. ...