处理django包含模板标记中的请求
发布时间:2021-01-17 13:48:07 所属栏目:Python 来源:互联网
导读:我是Django的新手,我正在尝试将上传文件表单放入包含标记中.所以我可以在各种模板中使用它. 我创建了以下包含标记: #upload_files.py@register.inclusion_tag(upload_form.html)def upload_handler(context): request = context[request] view_url =
我是Django的新手,我正在尝试将上传文件表单放入包含标记中.所以我可以在各种模板中使用它. 我创建了以下包含标记: #upload_files.py @register.inclusion_tag('upload_form.html') def upload_handler(context): request = context['request'] view_url = reverse('upload.views.upload_handler') if request.method == 'POST': form = UploadForm(request.POST,request.FILES) if form.is_valid(): form.save() return HttpResponseRedirect(view_url) upload_url,upload_data = prepare_upload(request,view_url) form = UploadForm() upload_model_list = UploadModel.objects.all().order_by('-pub_date') 我现在希望将其包含在模板中,所以在我拥有的页面上: #mypage.html {% extends 'base.html' %} {% load upload_files %} {% upload_handler %} 我收到以下错误: upload_handler takes 1 arguments 我应该从模板中传递什么参数? 解决方法注册标记时需要添加takes_context = True以使django将上下文对象传递给函数:@register.inclusion_tag('upload_form.html',takes_context=True) 默认上下文总是第一个参数然后! 有关详细信息,请参阅django在inclusion tags上的文档. 附注:仔细确定您使用此模板标签的页面,因为视图可能会以某种方式呈现其他表单/处理发布请求,这些请求可能会与您的标记提供的逻辑发生冲突(例如,如果表单验证将被触发,则会触发表单验证.页面可能会被来自其他表单的帖子请求调用).你可以,例如.另外检查一些HTML元素的名字是否在request.POST中,如果你在页面上有多个表单! (编辑:甘南站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |