我有一个问题,它会改进一个脚本:" script.py"以及" views.py"在django项目中。 目标是在页面中显示一个问题:" Pregunta"和一系列选项:" Opciones" 在脚本的一部分中,我需要调用视图的功能" Menu_Opciones"这样:
ESI_App.views.Menu_Opciones(request, Pregunta, Opciones)
在views.py中,我有以这种方式定义的函数:
def Menu_Opciones(request, Pregunta, Opciones):
for i in range(len(Opciones)):
ModelOpciones.objects.create(opciones=Opciones[i])
form = OpcionesForm(request.POST or None, field1_qs = ModelOpciones.objects.all())
context = {
'pregunta': Pregunta,
'form': form,
}
if form.is_valid():
opcion = form.cleaned_data['Campo_Opciones']
return render(request, "Menu_op.html", context)
这里是追溯:
Environment:
Request Method: GET
Request URL: http://127.0.0.1:8000/Menu_Opciones/
Django Version: 1.9.7
Python Version: 3.4.3
Installed Applications:
['django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'ESI_App']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware']
Traceback:
File "C:\Users\Miguel\Desktop\VenvProyecto\lib\site-packages\django\core\handlers\base.py" in get_response
149. response = self.process_exception_by_middleware(e, request)
File "C:\Users\Miguel\Desktop\VenvProyecto\lib\site-packages\django\core\handlers\base.py" in get_response
147. response = wrapped_callback(request, *callback_args, **callback_kwargs)
Exception Type: TypeError at /Menu_Opciones/
Exception Value: Menu_Opciones() missing 2 required positional arguments: 'Pregunta' and 'Opciones'
更多信息:我更改了计算机后出现此错误,但我创建了一个新的proyect和app,复制了代码,修改了所有路径,项目文件和文件夹名称,应用名称,设置等。小心翼翼。
正如你所看到的,我用这3个参数调用函数,我无法想象为什么会出现这个错误。拜托,帮我一把。 提前谢谢。
答案 0 :(得分:0)
我修好了!首先,我尝试将参数作为关键字传递但得到了相同的错误,所以我只是尝试在视图中定义" Pregunta"和" Opciones"作为全局变量:
Preg = ''
Opcs = []
我将它们导入" script.py"并赋予其正确的价值:
ESI_App.views.Preg = Pregunta
ESI_App.views.Opcs = Opciones
然后,我调用视图并使用那些全局变量:) 我知道它不是优雅滥用全局变量,但它避免了错误并解决了问题。 如果您找到另一种优雅的解决方案或方法来解决该错误,我将非常感激并将其解决方案标记为已接受。