【问题标题】:What does "_wrapped_view() takes at least 1 argument" error mean?“_wrapped_view() 至少需要 1 个参数”错误是什么意思?
【发布时间】:2012-05-31 19:26:37
【问题描述】:

我正在将 Django 表单数据渲染到一个模板,但是每次我访问 url 时都会显示这个错误:

_wrapped_view() takes at least 1 argument (0 given)

views.py 中的方法:

 @login_required                              
 def subnet_network_detail(request):
     if request.method == 'POST':
         form = NetworkCreateForm(request.POST)
         if form.is_valid():
             subnet = form.data['Subnet_Address']
             ip = form.data['IP_Address']
             user_hosts = get_hosts(user=request.user)
             hosts_list = host_subnet(user_hosts,subnet,ip)
             import pdb;pdb.set_trace()
     extra_context = {
         'hosts_list': hosts_list
         }
     return direct_to_template(request, 'networks/subnet_network.html',extra_context)

和 urls.py:

  url(r'^network/netmask/select/$',
     'subnet_network_detail', name='subnet_network_detail')

我阅读了有关此错误的其他问题,但没有任何想法。如何解决?

【问题讨论】:

  • 你能通过调试器运行代码,看看它挂在哪一行吗?

标签: python django django-templates django-views


【解决方案1】:

direct_to_template 旨在用于您的urls.py

url(r'^network/netmask/select/$', 'direct_to_template', {'template':'networks/subnet_network.html'}, name='subnet_network_detail')

您应该在视图中使用renderrender_to_response

如果您使用的是 django 1.3 或更高版本,您可以使用:

from django.shortcuts import render
...
return render('networks/subnet_network.html', extra_context)

或者,如果您使用的是早期版本:

from django.shortcuts import render_to_response
from django.template import RequestContext
...
return render_to_response('networks/subnet_network.html', extra_context, RequestContext(request))

【讨论】:

  • 如果由于使用 direct_to_template 而发生此错误。请您详细解释一下:) 正如我所提到的,我没有t 找到任何正确的解决问题的方法。我的意思是渲染的链接是什么:)
  • 嗯,先看看使用renderrender_to_response是否能解决问题?
  • 首先,我尝试使用相同的代码并显示此错误在分配之前引用局部变量'hosts_list'如果您解释一下会更好吗我这个。然后我删除了整个代码以隐藏该错误,我的意思是上下文部分,它工作正常!使用 render_to_response 后
  • 我真的不知道您为什么会收到 direct_to_template 的错误。它来自 login_required 装饰器内部的包装代码。但无论如何,您不应该使用direct_to_template,它不适合使用并且已被弃用。
  • 请您解释一下“分配前引用的局部变量'hosts_list'”错误为什么会发生?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-08
  • 2014-09-20
  • 2017-11-16
  • 2022-07-12
  • 1970-01-01
  • 2020-04-08
相关资源
最近更新 更多