前幾天 Django 官方推出了 3.0 框架,項目在 K8S 內部署啟動的時候,報了這個錯:ImportError: cannot import name 'render_to_response' from 'django.shortcuts'。然后簡單排查下了,進到容器內用 pip3 show django 命令可以看到框架升級到了 3.0(之前一直用的 Django 2+),看官方資料查到 Django 3.0 已經將 render_to_response 移除了。因為有部分代碼在用 render_to_response ,而我們打包鏡像的時候沒有指定 Django 版本,所以啟動時報錯了。解決方法有兩個:
方法一
安裝指定版本的 Django 版本(3.0以下),如:
pip3 install django==2.1.3
方法二
使用 render 代替 render_to_response。
相同點:都是展示模板頁面的。
不同點:render 方法可接收三個參數,一是request參數,二是待渲染的html模板文件,三是保存具體數據的字典參數。它的作用就是將數據填充進模板文件,最后把結果返回給瀏覽器。render 自動使用RequestContext,而 render_to_response 需要 coding 進去。
return render(request,"information.html",{"name":"test","password":"123456"})
return render_to_response("information.html",{"name":"test","password":"123456"},context_instance = RequestContext(request))