今日内容
1 前台全局样式和js配置
1.1 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;
}
1.2 settings.js
export default {
BASE_URL:'http://127.0.0.1:8000/'
}
1.3 main.js
import '@/assets/css/global.css'
import settings from "@/assets/js/settings";
Vue.prototype.$settings=settings
2 后台主页模块接口
-软件开发模式:
-瀑布模式:bbs项目
-敏捷开发:路飞,管理软件,
-bbs项目:设计数据库---》全设计完了---》开始写项目
-路飞:写一块设计一块数据库
-python ../../manage.py startapp home
class BaseModel(models.Model):
created_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
updated_time = models.DateTimeField(auto_now=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 = True
class Banner(BaseModel):
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
![image-20221107111329477]()
2.2 轮播图接口编写
from . import views
from rest_framework.routers import SimpleRouter
router = SimpleRouter()
router.register('banner', views.BannerView, 'banner')
urlpatterns = [
]
urlpatterns += router.urls
from rest_framework.viewsets import GenericViewSet
from utils.views import CommonListModelMixin
from rest_framework.response import Response
class BannerView(GenericViewSet, CommonListModelMixin):
queryset = Banner.objects.all().filter(is_delete=False, is_show=True).order_by('orders')
serializer_class = BannerSerializer
from rest_framework.mixins import ListModelMixin
from utils.response import APIResponse
class CommonListModelMixin(ListModelMixin):
def list(self, request, *args, **kwargs):
res = super().list(request, *args, **kwargs)
return APIResponse(result=res.data)
class BannerSerializer(serializers.ModelSerializer):
class Meta:
model = Banner
fields = ['title', 'image', 'link']
-下载,注册app,国际化
-创建超级用户
-录入数据
3 跨域问题详解,前后端打通
-同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现
请求的url地址,必须与浏览器上的url地址处于同域上,也就是域名,端口,协议相同.
比如:我在本地上的域名是127.0.0.1:8000,请求另外一个域名:127.0.0.1:8001一段数据
浏览器上就会报错,这个就是同源策略的保护,如果浏览器对javascript没有同源策略的保护,那么一些重要的机密网站将会很危险
-1 前端代理
-2 nginx代理
-3 cors解决跨域
CORS需要浏览器和服务器同时支持,IE浏览器不能低于IE10
浏览器将CORS请求分成两类:
-简单请求(simple request)
-非简单请求(not-so-simple request)
浏览器发出CORS简单请求,只需要在头信息之中增加一个Access-Control-Allow-Origin字段
浏览器发出CORS非简单请求,会在正式通信之前,先发送一个options请求,称为”预检”请求。
浏览器先询问服务器,当前网页所在的域名是否在服务器的许可名单之中,如果运行,再发真正的请求
-满足下面两种情况,就是简单请求
-1 请求方法是以下三种方法之一:
HEAD
GET
POST
-2 HTTP的请求头信息不超出以下几种字段:
Accept
Accept-Language
Content-Language
Last-Event-ID
Content-Type:只限于三个值application/x-www-form-urlencoded、multipart/form-data、text/plain
def test(request):
print(request.method)
res=HttpResponse('ok')
res['Access-Control-Allow-Origin']='*'
if request.method=='OPTIONS':
res['Access-Control-Allow-Headers'] = 'Content-Type'
return res
-第一步:安装django-cors-headers
-第二步:注册app
-第三步:中间件加入
-第四步:配置文件配置
4 自定义配置
BANNER_COUNT = 3
from settings.common_settings import *
queryset = Banner.objects.all().filter(is_delete=False, is_show=True).order_by('orders')[:settings.BANNER_COUNT]
5 git介绍和安装
-https://git-scm.com/downloads
-一路下一步
-任意位置点右键,如果有两个东西(【git gui here】 【git bash here】),表示安装完成
![image-20221107155607292]()
5.1 pycharm中配置git
-settings中搜索git,把git安装可执行文件配置好
5.1 svn,git ,github,gitee,gitlab
-如果我要写开源软件,本地装git,把代码提交到github
-python监控公司代码有没有被传到github
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)