render() missing 1 required positional argument: 'template_name'


最近搭建好Django框架后,練習寫post請求的時候遇到了各種坑,記錄下來希望對未來的你有所幫助。

坑點一:cannot find from refence render_to_response

在寫post請求的時候引入:from django.shortcuts import render_to_response,

提示:cannot find from refence render_to_response

原因:我的python版本為3.6.7,對應的django版本應該為2.1.x , 而我的django版本為2.1.15

 

 

前幾天 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))

參考文檔:(這兩個文檔很有幫助!!!)

https://blog.csdn.net/baidu_35085676/article/details/76665143

https://www.cnblogs.com/shenh/p/11993679.html

坑二:render() missing 1 required positional argument: 'template_name'

訪問:http://127.0.0.1:8000/login/

 

解決方法:

記得在return render(request, ‘login.html’)中,把request一定加到括號中

 

 

 再訪問:http://127.0.0.1:8000/login/

 

 參考文檔:https://blog.csdn.net/qq_44490008/article/details/88762434 

 

希望對你們有所幫助!!!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM