最新要闻
- 报告称每天工作超8小时心脏病风险增8成:很多公司拒绝996、启用四天工作制
- 比亚迪专业个性化品牌曝光:首车性能对标奔驰大G 年内发布
- 苹果将成本转嫁给果粉!2024年iPad Pro要大涨价
- LOL帧率近乎翻倍!Intel Arc A750新驱动测试:大幅提升、最大短板没有了
- 丰田有队友了!宝马氢燃料SUV将路试:16磅氢能跑500公里
- 环球聚焦:曝吴秀波儿子家暴成性,女方晒照满嘴是血,指证男方出轨乱约
- 周杰伦演唱会数百万人疯抢!演唱会门票30秒卖光
- 环球新资讯:长安发律师函控诉银河之光抄袭 吉利回应:毫无根据、误导公众
- 全白外观拥有硬核实力!影驰Z790金属大师D5 Wi-Fi白金版主板评测:内存轻松提速10%
- 环球快讯:越来越多PC用户不愿买显卡了:2022年Q4桌面独显销量暴跌43%
- 世界第一次!中国空间站看到了在轨航天员的“三维皮肤”
- 【时快讯】89元 小米无线键鼠套装2上架:鼠标轻至45g
- 环球精选!运酒撞破酒缸1分钟损失5万!男子:一坛酒1000斤 1斤50块钱
- IPO参考:联域光电拟深市主板IPO 郝氏控股二次递表港交所
- 【全球快播报】感冒的食疗偏方秘方_感冒的食疗偏方
- 8尺夫人面对面!《生化危机8 VR》IGN 8分 MTC用户9.7分
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
【速看料】Python实战项目3-前后端连接/首页轮播图表设计
项目前端全局css,全局配置文件
- 整理项目App.vue
- router/index.js
const routes = [ { path: "/", name: "Home", component: Home,}]前端项目整理
- HomeView.vue
首页
<script>export default { name: "HomeView",}</script>
其他页面组件和小组件都删除掉
(资料图片)
全局css处理
正常写前端项目,需要去掉所有标签的样式,css
- 去除所有标签样式
1.在assets中新建css文件,global.css
/* 声明全局样式和项目的初始化样式 */body, h1, h2, h3, h4, h5, h6, p, table, tr, td, ul, li, a, form, input, select, option, textarea { margin: 0; padding: 0; font-size: 15px;}a { text-decoration: none; color: #333;}ul { list-style: none;}table { border-collapse: collapse; /* 合并边框 */}
2.在main.js中配置/全局生效
# 第二步:全局生效 main.js中配置// 使用全局css样式,只需要导入就会生效import "@/assets/css/global.css"
全局js
向后端发送请求,请求地址测试阶段127.0.0.:8000 后期上线地址要变,如果在组件中把地址写死以后都要改,每个都要改
1.在assets目录下新建js目录,新建settings.js文件
export default { BASE_URL:"http://127.0.0.1:8000/api/v1/"}
2.在main.js引入settings.js 把settings对象放入vue的原型中
Vue.prototype.$settings=settings // 任意组件中使用 this.$settings.BASE_URL == http://127.0.0.1:8000/
安装axios
跟后端交互 axio
安装 cnpm install axios -S把axios在main.js中配置
import axios from "axios"Vue.prototype.$axios = axios // 任意组件中使用 this.$axios.get()
安装vue-cookies
安装 cnpm install vue-cookies -S把 vue-cookies在main.js中配置
import cookies from "vue-cookies"Vue.prototype.$cookies=cookies // 任意组件中使用 this.$cookies.set()
安装elementui
安装 cnpm install element-ui -S把 element-ui在main.js中配置
import ElementUI from "element-ui";import "element-ui/lib/theme-chalk/index.css";Vue.use(ElementUI);
安装bootstrap和jquery
**安装 cnpm install **bootstrap@3 -S**安装 cnpm install **jquery-S把 bootstrap-jquery在main.js中配置
import "bootstrap"import "bootstrap/dist/css/bootstrap.min.css"
vue.config.js 配置一下
const { defineConfig } = require("@vue/cli-service") module.exports = defineConfig({ transpileDependencies: true }) const webpack = require("webpack"); module.exports = { configureWebpack: { plugins: [ new webpack.ProvidePlugin({ $: "jquery", jQuery: "jquery", "window.jQuery": "jquery", "window.$": "jquery", Popper: ["popper.js", "default"] }) ] } };
重启项目后生效
后台主页模块表设计
分析完原型图,首页需要写的接口轮播图接口推荐课程接口推荐老师学员评论
- 来到apps文件夹下执行
- python ../../manage.py startapp home
- 在models中创建 轮播图表 Banner
from utils.models import BaseModelfrom django.db import models# 我们发现有些字段,别的表也会有,所以我们抽出一个公共的Base表,只要使用这些字段,就继承这个表(类似与AbstractUser)class Banner(BaseModel): # 创建时间,是否删除,是否展示 继承我们的BaseModel即可 # 图片名字,图片介绍,图片link地址 title = models.CharField(max_length=16, unique=True, verbose_name="图片名称") image = models.ImageField(upload_to="banner", verbose_name="图片地址") link = models.CharField(max_length=64, verbose_name="跳转连接") info = models.TextField(verbose_name="图片详情") class Meta: db_table = "luffy_banner" # 改表名 verbose_name_plural = "轮播图表" def __str__(self): return self.title
因为我们课程详情的表也需要用一些共同的字段,所以我们将公共部分抽出
# 公共表,公共能用到的字段# Create your models here.class BaseModel(models.Model): created_time = models.DateTimeField(auto_now_add=True,verbose_name="创建时间") updated_time = models.DateTimeField(auto_now_add=True,verbose_name="最后更新时间") is_delete = models.BooleanField(default=False,verbose_name="是否删除") is_show = models.BooleanField(default=True,verbose_name="是否上架") orders = models.IntegerField(verbose_name="优先级") class Meta: # 如果表迁移,这个表就会生成,咱们不能在数据库中生成这张表 # abstract 需要加 abstract = True 虚拟表,只用来继承,不在数据库生成! abstract = True
并且,将公共的这个模型表放在utils.models.py中,我们用的时候调用即可
后台主页模块轮播图接口
面试题: form 类 和 modelForm的区别序列化类:
from rest_framework.serializers import ModelSerializerfrom .models import Bannerclass BannerSerializer(ModelSerializer): class Meta: model = Banner fields = ["title","image","link",]
视图类:
from rest_framework.viewsets import GenericViewSetfrom rest_framework.mixins import ListModelMixinfrom .models import Bannerfrom .serializer import BannerSerializerfrom utils.common_response import APIResponseclass BannerView(GenericViewSet, ListModelMixin): queryset = Banner.objects.filter(is_delete=False, is_show=True).order_by("orders") serializer_class = BannerSerializer def list(self, request, *args, **kwargs): res = super().list(request, *args, **kwargs) return APIResponse(data=res.data) # {code:100,msg:成功,data=[{},{}]}
路由:
from django.urls import path, includefrom rest_framework.routers import SimpleRouterfrom . import viewsrouter = SimpleRouter()router.register("banner", views.BannerView, "banner")urlpatterns = [ path("",include(router.urls))]# urlpatterns += router.urls 两种方式都可以.
录入数据
# 主站前后端分离# 后台管理使用django 的admin做的--->simpleui# 使用步骤:第一步:安装simpleuipip install django-simpleui第二步:注册app第三步:录入数据 http://127.0.0.1:8000/admin
跨域问题详解
问题描述:前端发送ajax请求到后端,会有跨域的拦截(报错)问题出现的原因:同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现请求的url地址,必须与浏览器上的url地址处于同域上,也就是域名,端口,协议相同.比如:我在本地上的域名是127.0.0.1:8000,请求另外一个域名:127.0.0.1:8001一段数据浏览器上就会报错,个就是同源策略的保护,如果浏览器对javascript没有同源策略的保护,那么一些重要的机密网站将会很危险
已拦截跨源请求:同源策略禁止读取位于 http://127.0.0.1:8001/SendAjax/ 的远程资源。原因:CORS 头缺少 "Access-Control-Allow-Origin")。
CORS(跨域资源共享)简介
浏览器将CORS请求分成两类:简单请求(simple request)和非简单请求(not-so-simple request)。浏览器发出CORS简单请求,只需要在头信息之中增加一个Origin字段。浏览器发出CORS非简单请求,会在正式通信之前,增加一次HTTP查询请求,称为”预检”请求(preflight)。浏览器先询问服务器,当前网页所在的域名是否在服务器的许可名单之中,以及可以使用哪些HTTP动词和头信息字段。只有得到肯定答复,浏览器才会发出正式的XMLHttpRequest请求,否则就报错。
CORS两种请求详解
只要同时满足以下两大条件,就属于简单请求
# 请求方法是以下三种方法之一:HEADGETPOST# HTTP的头信息不超出以下几种字段:AcceptAccept-LanguageContent-LanguageLast-Event-IDContent-Type:只限于三个值application/x-www-form-urlencoded、multipart/form-data、text/plain
凡是不同时满足上面两个条件,就属于非简单请求。浏览器对这两种请求的处理,是不一样的。
* 简单请求和非简单请求的区别? 简单请求:一次请求 非简单请求:两次请求,在发送数据之前会先发一次请求用于做“预检”,只有“预检”通过后才再发送一次请求用于数据传输。* 关于“预检”- 请求方式:OPTIONS- “预检”其实做检查,检查如果通过则允许传输数据,检查不通过则不再发送真正想要发送的消息- 如何“预检” => 如果复杂请求是PUT等请求,则服务端需要设置允许某请求,否则“预检”不通过 Access-Control-Request-Method => 如果复杂请求设置了请求头,则服务端需要设置允许某请求头,否则“预检”不通过 Access-Control-Request-Headers
支持跨域,简单请求服务器设置响应头:Access-Control-Allow-Origin = ‘域名’ 或 ‘*’支持跨域,复杂请求由于复杂请求时,首先会发送“预检”请求,如果“预检”成功,则发送真实数据。
- “预检”请求时,允许请求方式则需服务器设置响应头:Access-Control-Request-Method
- “预检”请求时,允许请求头则需服务器设置响应头:Access-Control-Request-Headers
Django项目中支持CORS在返回的结果中加入与允许信息(简单请求)
def test(request): import json obj=HttpResponse(json.dumps({"name":"lqz"})) # obj["Access-Control-Allow-Origin"]="*" obj["Access-Control-Allow-Origin"]="http://127.0.0.1:8004" return obj
放到中间件处理复杂和简单请求:
from django.utils.deprecation import MiddlewareMixinclass CorsMiddleWare(MiddlewareMixin): def process_response(self,request,response): if request.method=="OPTIONS": #可以加* response["Access-Control-Allow-Headers"]="Content-Type" response["Access-Control-Allow-Origin"] = "http://localhost:8080" return response
在django中使用django-cors-header解决跨域问题
使用pip安装
pip install django-cors-headers
添加到setting的app中注册
INSTALLED_APPS = (..."corsheaders",...)
添加中间件
MIDDLEWARE = [ ..."corsheaders.middleware.CorsMiddleware",...]
settings文件下面添加配置
CORS_ORIGIN_ALLOW_ALL = TrueCORS_ALLOW_METHODS = ("DELETE","GET","OPTIONS","PATCH","POST","PUT","VIEW",)CORS_ALLOW_HEADERS = ("XMLHttpRequest","X_FILENAME","accept-encoding","authorization","content-type","dnt","origin","user-agent","x-csrftoken","x-requested-with","Pragma","token")
-
【速看料】Python实战项目3-前后端连接/首页轮播图表设计
项目前端全局css,全局配置文件整理项目App vue<template><divid="app"><router-view >&l
来源: -
热头条丨剑指 Offer 55 - II. 平衡二叉树(java解题)
leetcode《图解数据结构》剑指Offer55-II 平衡二叉树(java解题)的解题思路和java代码,并附上java中...
来源: -
焦点速讯:安装node并创建vue项目
1 多版本管理工具& 160;nvmhttps: github com coreybutler nvm-windows releasesnvm-setup zip2 打开nvm文件夹下的se
来源: 【速看料】Python实战项目3-前后端连接/首页轮播图表设计
热头条丨剑指 Offer 55 - II. 平衡二叉树(java解题)
焦点速讯:安装node并创建vue项目
报告称每天工作超8小时心脏病风险增8成:很多公司拒绝996、启用四天工作制
比亚迪专业个性化品牌曝光:首车性能对标奔驰大G 年内发布
苹果将成本转嫁给果粉!2024年iPad Pro要大涨价
LOL帧率近乎翻倍!Intel Arc A750新驱动测试:大幅提升、最大短板没有了
丰田有队友了!宝马氢燃料SUV将路试:16磅氢能跑500公里
世界速读:CSS中的BFC、IFC、GFC、FFC
环球即时:Synchronized,我要一层一层剥开你的心
全球视点!轻松玩转makefile|基础知识
环球聚焦:曝吴秀波儿子家暴成性,女方晒照满嘴是血,指证男方出轨乱约
周杰伦演唱会数百万人疯抢!演唱会门票30秒卖光
环球新资讯:长安发律师函控诉银河之光抄袭 吉利回应:毫无根据、误导公众
环球微速讯:【同步、共享和内容协作软件】上海道宁与ownCloud让您的团队随时随地在任何设备上轻松处理数据
全白外观拥有硬核实力!影驰Z790金属大师D5 Wi-Fi白金版主板评测:内存轻松提速10%
环球快讯:越来越多PC用户不愿买显卡了:2022年Q4桌面独显销量暴跌43%
世界第一次!中国空间站看到了在轨航天员的“三维皮肤”
【时快讯】89元 小米无线键鼠套装2上架:鼠标轻至45g
环球精选!运酒撞破酒缸1分钟损失5万!男子:一坛酒1000斤 1斤50块钱
天天快看点丨易基因|独家分享:高通量测序后的下游实验验证方法——DNA甲基化篇
IPO参考:联域光电拟深市主板IPO 郝氏控股二次递表港交所
【全球快播报】感冒的食疗偏方秘方_感冒的食疗偏方
8尺夫人面对面!《生化危机8 VR》IGN 8分 MTC用户9.7分
环球热点评!40多万的车没有语音控制功能!宝马遭X3车主集体投诉
今日聚焦!一加Ace 2V搭载旗舰级2.8D微弧玻璃:手感温润如玉
世界讯息:续航1整年!小米智能门锁M20大屏猫眼版开售:首发1899元
世界要闻:《艾尔登法环》原子之心机械姐妹花Mod 性感吸睛
自得其乐是什么意思?自得其乐的名人例子有哪些?
12%是零点几?12%公积金是什么档次?
给据邮件是什么意思?给据邮件如何填写?
男主角性格冰冷的小说有哪些?男主角性格冰冷的小说推荐
兔子能喝牛奶吗?兔子吃的食物有哪些?
小米手机屏幕校准在哪里?小米手机屏幕有多大?
集成显卡可以玩英雄联盟吗?集成显卡和独立显卡有什么区别?
华为mate9哪一年生产的?华为mate9参数配置
可视化图表之奥妙——百分比堆积条形图
看热讯:基于开源IM即时通讯框架MobileIMSDK:RainbowChat-iOS端v6.2版已发布
常用的xpath
环球观察:mybatis plus映射postgreSQL数组
世界资讯:redis实现用户查询次数限制
军用三防手机有哪些?军用三防手机推荐
苏泊尔电磁炉滴滴响不加热是什么原因?苏泊尔电磁炉滴滴响不加热怎么解决?
最新资讯:完美全面屏!努比亚Z50 Ultra官宣3月7日发布
新消息丨控告抄袭!长安给吉利发去律师函
【环球新要闻】BBA压力来了!李想:今年理想将挑战30-50万豪华SUV市场20%份额
环球快消息!SRC挖掘之Access验证校验的漏洞挖掘
【世界热闻】tomcat源码分析(一)如何启动服务
协同办公领域未来三大趋势(协同办公带来的机遇)
彻底理解 HashMap 及 LinkedHashMap,面试官请随便问!
当前焦点!轻量级CI/CD发布部署环境搭建及使用_02_docker安装jenkins
世界微速讯:理想汽车2022年亏损额创新高达20.32亿元
天天热议:腾势D9首创双枪充电 赵长江:比高压充电更节省社会成本
当前视讯!DXO排名全球第一!京东方认领荣耀Magic5/Pro屏幕
【全球播资讯】史诗级更新!雷军:小米12S Ultra 2倍变焦快捷按键正式上线
环球时讯:巧妙利用“慧言”机器人在安全场景中实践
每日消息!iOS封闭垄断 俄罗斯怒罚苹果9.06亿卢布:后者服软已悄悄支付
李想:比亚迪汽车毛利率20%左右 跟理想汽车很接近 良心
世界最新:梅西第七次当选世界足球先生 FIFA年度最佳球员!网友泪目:实至名归
全球消息!游戏第一神U上新!AMD锐龙9 7950X3D超频后更强:性能完秒13900KS
天天热点!40吨重 我国长征九号重型火箭未来将发射大型天文望远镜:探测地外生命
湖人官方:詹姆斯明日因右脚伤势缺战灰熊
全球热消息:世界第二大水电站16台机组全部通过验收:自主研制 登顶世界水电
全球观速讯丨增程是落后技术?李想:理想汽车单车型研发投入中国行业最高
环球今热点:10多天还没到 市民吐槽快递延误 客服:你投诉去吧
读Java性能权威指南(第2版)笔记04_ Java SE API技巧下
天天速递!承诺员工1人1套房!董明珠被传与王自如恋爱 格力愤怒已报案
事与愿违下一句啥意思_事与愿违下一句是什么
天天观热点:一元二次方程
全球报道:k8s中的PV和PVC
观察:Canvas画布
印尼16月大男婴重达27公斤:比8岁男童还重
焦点日报:最后一天赶紧换!苹果iPhone等设备全系电池明天涨价:最贵519元
关注:茶颜悦色回应满杯奶茶放久了变半杯:奶沫放久了会自己消掉
每日看点!小米Wi-Fi 7路由器BE7000亮相:4个2.5G口 定价千元买吗?
当前视点!3名《炉石传说》电竞运动员注册成功:然而暴雪禁止中国玩家参加炉石赛事
环球聚焦:东川区开展校园周边环境专项集中整治行动
资讯推荐:冒险岛辅助2023_冒险岛多趣辅助
记录写了6年代码的心得
今亮点!Django uwsgi问题解析
全球新消息丨不坑盒子:word/wps最强辅助工具2023最新版
天天热议:轻松超越i9-13900KS!AMD锐龙9 7950X3D首发评测:一半功耗、价格更低
【天天报资讯】电池容量最大的旗舰手机!荣耀Magic5 Pro图赏
天天速递!女生奶茶中喝出3个标签后细菌感染:商家赔付1000元及检查费用
天天视讯!做一个右键菜单 Vue 组件
天天热文:设计模式(十二)----结构型模式之代理模式和装饰者模式的区别
每日动态!闻着臭、吃着香?游客热衷打包柳州螺蛳粉 机场火车站回应
天天热点评!番茄涨价太狠 英国餐馆推出白披萨:网友吐槽太苦了
每日热文:荣耀Magic5 Pro全球首发硅碳负极电池:5450mAh超大容量
焦点观察:IDEA2022.3永久激活破解 最新激活 一键激活 亲测可用!
浅谈: sizeof()与指针
今亮点!0x07_自制操作系统My-OS实现键盘输出字符到屏幕
当前热议!Python中logging模块用法
世界滚动:C语言程序设计
天天最资讯丨有信免费电话使用攻略_有信怎么使用 免费
七夕 我们分手
微资讯!自带散热泵!一加推出45W液冷散热背夹:最高可降20℃
倒计时两分钟!SpaceX载人火箭发射最后关头被紧急叫停
世界资讯:七彩虹战戟CN700 1TB SSD评测:国产方案7.1GB/s读取、499元最香
GTX 750 Ti挑战大热单机:画面不忍直视