Django上传文件后重新渲染页面上下文不生效问题求助
Django文件上传后页面变量未更新问题排查
我用Django实现文件上传功能后,希望上传完成重新渲染页面时,把HTML中的{{FileName}}从'Test'改为'Test2',但这个操作没生效,相关代码如下:
views.py代码
def UploadView(request): context = {} # Generate Language Selection context['FileName'] = 'Test' if request.method == "POST": if not(request.FILES=={}): date_time = datetime.datetime.now() date_time = date_time.strftime('%Y%m%d_%H_%M') # uploaded_file = request.FILES["uploaded_file"] uploaded_file = request.FILES.get('file') document = Document( file_title = request.user.user_unique_key, uploaded_file = uploaded_file, date_time = date_time, ) document.save() file_path = document.uploaded_file.file.name file_name = uploaded_file.name context['FileName']='Test2'; return render(request,"UPLOAD.html",context) return render(request, "UPLOAD.html", context)
HTML文件代码
<h6><font color="red">{{FileName}}</font></h6>
问题原因及解决方法
- 表单编码类型错误:上传文件的表单必须指定
enctype="multipart/form-data",否则request.FILES会是空字典,无法触发修改FileName的分支。确保HTML中的form标签写法:<form method="post" enctype="multipart/form-data"> <!-- 表单内容 --> </form> - 文件字段name不匹配:后端用
request.FILES.get('file')获取文件,要确认HTML中文件输入框的name属性是file;如果表单里是name="uploaded_file",则后端要改成request.FILES.get('uploaded_file'),或者调整表单的name值。 - 代码未进入修改分支:可以在
if not(request.FILES=={}):分支内添加打印语句(比如print("进入文件上传分支")),确认代码是否执行到修改FileName的部分。如果没执行,说明文件没被正确上传,优先检查上述两点。 - 浏览器缓存干扰:如果后端已经返回'Test2'但页面显示还是'Test',可以清除浏览器缓存或按
Ctrl+F5硬刷新页面。
内容的提问来源于stack exchange,提问作者TechWorld
相关产品推荐
相关产品推荐

