• 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. LeetCode Move Zeroes (简单题)

    题意: 给定一个整型数组nums,要求将其中所有的0移动到末尾,并维护所有非0整数的相对位置不变. 思路: 扫一遍,两个指针维护0与非0的交界,将非0的数向前赋值就行了. C++ class Solu ...

  2. 一次对真实网站的SQL注入———SQLmap使用

    网上有许多手工注入SQL的例子和语句,非常值得我们学习,手工注入能让我们更加理解网站和数据库的关系,也能明白为什么利用注入语句能发现网站漏洞. 因为我是新手,注入语句还不太熟悉,我这次是手注发现的注点 ...

  3. 使用OpenFileDialog组件打开多个文

    实现效果: 知识运用: OpenFileDialog组件的Multiselect属性 //是否允许多选 public bool Multiselect {get;ser;} FileNames属性 / ...

  4. java菜鸟的Python学习之路(1)

    学习一门新的语言,应当抓住语言的共有特性,这样容易触类旁通,学习起来也十分的快捷愉悦 而语言的特性大约有以下元素 变量定义与类型 算术符号与逻辑符号 for 循环与 while 循环 数组,线性表等一 ...

  5. 阿里云服务器下安装LAMP环境(CentOS Linux 6.3) 安装与配置 Apache 服务

    想让我们的阿里云服务器成为一台 Web 服务器,我们需要安装一个 Web 服务器软件,比如 Apache ,或者 Nginx 等等.下面我们就一起来安装一个 Apache 服务. 我们可以使用 yum ...

  6. dom事件操作例题,电子时钟,验证码,随机事件

    dom事件操作 当事件发生时,可以执行js 例子: 当用户点击时,会改变<h1>的内容: <h1 onClick="this.innerHTML='文本更换'"& ...

  7. AngularJS 数组

    AngularJS数组就像Javascript数组 <!DOCTYPE html><html><head><meta http-equiv="Con ...

  8. 国产中标麒麟Linux部署dotnet core 环境并运行项目 (二) 部署运行控制台项目

    背景 在上一篇文章安装dotnet core,已经安装好dotnet core了.之前只是安装成功了dotnet, 输入dotnet --info,可以确认安装成功了,但是在运行代码时,还是报错了,本 ...

  9. C# 界面跳转-登陆之后跳转至主窗口

    在登陆按钮验证成功之后可以将会话结果改为OK //验证通过之后将对话结果设置为OK(之后会载入主界面) this.DialogResult = DialogResult.OK; this.Dispos ...

  10. Oracle数据库学习(二)

    2.用SQL进行多表查询 (1)无条件多表查询 笛卡尔集:总记录数=table1记录数×table2记录数 select * from table1, table2 (2)等值连接 内连接:selec ...