1.web访问的实质
(1)客户端发送请求到web服务器
(2)web服务器返回html页面给客户端
第一次接触web,没基础。创建django项目全靠看教程https://www.cnblogs.com/geekmao/p/7612430.html
2.rest_framework问题
测试web时,报错:django.template.exceptions.TemplateDoesNotExist: rest_framework/api.html
解决办法:
在配置文件中配置rest_framework库,setting文件中的参数INSTALLED_APPS加上rest_framework
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'rest_framework',]
3.IP地址访问问题
测试的时候是在本地测试,但想通过局域网和其他开发人员共享同一开发站点,就会被拒绝连接请求。
参考链接:https://www.cnblogs.com/zknublx/p/6184418.html
解决办法:
(1)关闭防火墙
(2)通过指定一个IP地址: 0.0.0.0,告诉服务器去侦听任意的网络接口。(pycharm右上角点击edit configurations配置host)
(3)在setting配置中加入参数ALLOWED_HOSTS=['192.168.0.148']
4.Not Found:/favicon.ico问题
默认情况下,浏览器访问一个网站时,同时还会向服务器请求获取网站的图标,即favicon.ico。
解决办法:
1.找一个图片格式为ico,命名成favicon.ico,拷贝到django下的\contrib\admin\static\admin\img
在命令行输入pip show django,获取django的安装路径
2.网站www.html-kit.com/favicon/可以在线生成ico文件。
5.keras模型应用在django中出现的问题
问题背景:
项目需求是用深度学习训练一个验证码识别的模型,然后做一个web接口,调用web接口时加载模型并实现预测。
问题:
加载模型和第一次预测的过程没有问题,但是再次执行到model.predict就会报错
ValueError: Tensor Tensor(“Placeholder:0”, shape=(3, 3, 1, 32), dtype=float32) is no an element of this graph
解决办法:
在web初始化时加载模型,并随便生成一个向量让model执行一次predict函数,之后再使用就不会有问题了
参考链接:https://zhuanlan.zhihu.com/p/27101000
# 加载模型,django 会在 web 应用初始化时执行这段代码 from keras.models import load_model import os import numpy as np print('load model...') # import keras # keras.backend.clear_session() path = os.path.dirname(os.path.dirname(__file__)) model_path = os.path.join(path,'core','taobaomodel.h5') model = load_model(model_path) weights_path = os.path.join(path, 'core','taobaomodel_weights.h5') model.load_weights(weights_path) print('load done.') # load 进来模型紧接着就执行一次 predict 函数 # 玄学:不预测的话,多次预测会报错(来自知乎https://zhuanlan.zhihu.com/p/27101000的解决办法)。 print('test model...') print(model.predict(np.zeros((1,30,30,1)))) print('test done.') # 使用模型预测 def captcha_class(x_pre): global model label = model.predict(x_pre) return label