python+django+vue+mysql的毕业设计怎么容易通过答辩,python和django毕业设计答辩
这几天临近毕业,有很多同学在后台问我,python毕业设计应该怎么答辩,怎么答辩会更容易通过,我为大家总结了答辩流程,希望可以帮助到大家,如果需要指导答辩,可以联系
1、你的毕业设计的技术栈是什么
前端vue
后端python的django框架
2、为什么选择用vue和django作为你的毕业设计呢
因为vue是一种比较适合当代企业开发并且一种较为简单的渐进式框架,比较容易接受
因为python非常适合初学者,可以非常简单的开发出来一个web完整,django框架是python里最适合初学者的一门框架,简单、组件丰富
3、项目有什么创新点没有
(1):融合了echarts可视化技术,可以通过echarts非常直观的了解到项目里的表结构和数据关系
(2):结合了爬虫技术,项目需要数据不用自己手动录入,可以通过爬虫一键录入
(3):多表关系,增删改查
(4):审核功能
(5):推荐功能,使用了基于用户协同过滤算法
(6):使用restful api的api风格,非常直观,简单的展现逻辑
4、前端怎么一步步找到你的vue文件
主要通过routers路由文件,在routers里,定义好每一个路由和页面关系
5、每个vue里怎么展示数据
通过element ui的可以非常简单展示数据
6、vue和django怎么融合,怎么发送请求和携带数据发送给后端
vue和django主要通过axios组件
axios.get 查看
axios.post 增加
axios.put 修改
axios.delete 删除
// 查看信息
gethtsp(query) {
return request({
url: '/django_vue_lvyou/jq/',
method: 'get',
params: query
});
},
// 修改信息
updatehtsp(data) {
return request({
url: '/django_vue_lvyou/jq/' + data.id + '/',
method: 'put',
data: data
});
},
// 删除信息
deletehtsp(data) {
return request({
url: '/django_vue_lvyou/jq/' + data.id + '/',
method: 'delete',
data: data
});
},
// 创建信息
createhtsp(data) {
return request({
url: '/django_vue_lvyou/jq/',
method: 'post',
data: data
});
},
7、vue发送给django,django怎么接收数据
django数据接收有一定的逻辑,主要通过manage.py->settings.py->urls(总路由)->urls(子路由)->views
这里的views就是最后视图文件
path('jq/', views.Jqview.as_view()),
re_path('jq/(?P<pk>\d+)/', views.Jqdetailview.as_view()),
class Jqview(APIView):
# 单个禁用 token 验证
authentication_classes = []
def get(self, request):
class Jqdetailview(APIView):
authentication_classes = []
def get(self, request, pk):
class 里的 get post put delete 函数会拿到前端数据
8、django怎么增删改查数据
django增删改查数据主要是通过orm,orm是一个数据库插件,我们可以不用写原声sql语句就可以简单,高效,安全的书写增删改查语句
students_data = Jingqu.objects.all()
Jingqu.objects.filter(pk=sp_id).update(is_shenhe="已审核")
Jingqu.objects.get(pk=pk).delete()
9、django怎么把数据给前端
return Response(data={'code': 200, 'message': '删除成功'})
10、项目有认证
有token校验,访问接口带 token
class TokenAuthtication(BaseAuthentication):
def authenticate(self, request):
"""
先获取 header 中的token进行解析,在进行校验
- 获取token,检查过期时间是否大于当前时间
:param request:
:return:
"""
try:
# 先从前端的 headers 里拿到当前登录用户 token
token = request.headers.get("Ac-Token")
# 通过 jwt 反解过期和验证信息
data = jwt.decode(token, settings.SECRET_KEY, 'HS256')
# 如果时间过期 需要重新登陆
if data["exp"] < int(time.time()):
raise exceptions.AuthenticationFailed("登录超时,请重新登录")
# 如果时间没过期 需要判断一下存在 token 角色id是否存在于 Guanli Tearcher Student 三张数据库表里 如果三张表里都没有用户名 报错
elif (Guanli.objects.filter(username=data["username"]).count() == 0 and
Goumai.objects.filter(username=data["username"]).count() == 0 and
Chushou.objects.filter(username=data["username"]).count() == 0):
raise exceptions.AuthenticationFailed("认证用户不存在")
except Exception as error:
print(error)
raise exceptions.AuthenticationFailed("用户未登录,请登录")