初识django--遇到的问题及解决办法

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




猜你喜欢

转载自blog.csdn.net/dxh1994/article/details/80694972
今日推荐