我在 Django 中有一个视图,我必须在这个视图中调用另一个函数。当我在视图中调用该函数时,出现'str' object has no attribute 'user'
错误。但是当我删除函数调用时,没有错误。它在 django contrib 装饰器中给出了错误,如下所示。
C:\Users\imgea\Anaconda3\lib\site-packages\django\contrib\auth\decorators.py in _wrapped_view
redirecting to the log-in page if necessary. The test should be a callable
that takes the user object and returns True if the user passes.
"""
def decorator(view_func):
@wraps(view_func)
def _wrapped_view(request, *args, **kwargs):
if test_func(request.user):
return view_func(request, *args, **kwargs)
path = request.build_absolute_uri()
resolved_login_url = resolve_url(login_url or settings.LOGIN_URL)
# If the login url is the same scheme and net location then just
# use the path as the "next" url.
login_scheme, login_netloc = urlparse(resolved_login_url)[:2]
我的观点;
def optimize(request):
customer_name = str(request.user)
model_name = customer_name + "_cost"
nominals = ['material_type','program','isleme_merkezi', 'baglama_sekil', 'ymmm', 'tezgah_kodu']
cost_id = request.session['opt_id']
optimization_features = request.session['opt_features']
cost = Cost.objects.get(id=cost_id)
cost_dict = model_to_dict(cost)
features = request.user.profile.selected_features
unknown_nominal_column_names = []
unknown_column_names = []
unknown_initial_guess = []
known_map = dict()
for feature in features:
known_map[feature] = cost_dict[feature]
for feature in optimization_features:
if feature in nominals:
unknown_nominal_column_names.append(feature)
else:
unknown_column_names.append(feature)
unknown_initial_guess.append(float(known_map[feature]))
values, optimize_cost = optimize_parameters(customer_name, model_name, known_map, unknown_column_names, unknown_nominal_column_names, unknown_initial_guess)
# print(values)
# print(optimize_cost)
return render(request, "optimize_result.html")
我想在该视图中调用的函数;
def optimize_parameters(customer_name, model_name, known_values, unknown_column_names, unknown_nominal_column_names, unknown_initial_guess):
models = Prediction.load_models(customer_name, model_name)
if unknown_column_names:
bounds = (75, 100)
else:
bounds = (None, None)
single_model = models[0][0]
unknown_nominal_column_indices = [single_model.nominal_columns.index(x) for x in unknown_nominal_column_names]
unknown_nominal_values = [single_model.encoder.categories_[i] for i in unknown_nominal_column_indices]
# create lambda function
objective_function = lambda x, unknown_nominal_dictionary: Prediction.optimize_prediction(x,
unknown_column_names,
unknown_nominal_dictionary,
known_values, models,
0.7)
lowest_values, lowest_cost = optimize(objective_function, bounds, unknown_column_names, unknown_nominal_column_names, unknown_nominal_values)
return lowest_values, lowest_cost
我看到了这个问题的解决方案,即删除login_required
但即使我尝试了这个,我仍然得到同样的错误。我该如何解决这个问题?