ial*_*ali 6 django templates request templatetags
我是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
我应该从模板中传递什么参数?
Ber*_*ant 11
takes_context=True注册标记时需要添加django将上下文对象传递给函数:
@register.inclusion_tag('upload_form.html', takes_context=True)
Run Code Online (Sandbox Code Playgroud)
默认情况下,它context始终是第一个参数!
有关更多详细信息,请参阅django关于包含标记的文档.
附注:仔细确定您使用此模板标签的页面,因为视图可能会以某种方式呈现其他表单/处理发布请求,这些请求可能会与您的标记提供的逻辑发生冲突(例如,如果表单验证将被触发,则会触发表单验证.页面可能会被来自其他表单的帖子请求调用).你可以,例如.另外,request.POST如果页面上有多个表单,请检查是否有某些HTML元素的名称!
| 归档时间: |
|
| 查看次数: |
3963 次 |
| 最近记录: |