【发布时间】:2017-12-14 18:57:53
【问题描述】:
编辑 2:使用未注释的行
context = super(ComecandoView, self).get_context_data(**kwargs)完成回溯。如果我将此行更改为context = {},我不会收到任何错误,但仍然无法使用用户的变量。
- response = Wrapped_callback(request, *callback_args, **callback_kwargs)
文件 “C:\Users\gabriel\PycharmProjects\django-solo-testes\wvevn\lib\site-packages\django\views\generic\base.py” 在视野中 68. return self.dispatch(request, *args, **kwargs)
文件 “C:\Users\gabriel\PycharmProjects\django-solo-testes\wvevn\lib\site-packages\django\views\generic\base.py” 在调度中 88. return handler(request, *args, **kwargs)
文件 “C:\Users\gabriel\PycharmProjects\django-solo-testes\wvevn\lib\site-packages\django\views\generic\edit.py” 在得到 174. return self.render_to_response(self.get_context_data())
文件 "C:\Users\gabriel\PycharmProjects\django-solo-testes\papaBelini\core\views.py" 在 get_context_data 中 107. context = super(ComecandoView, self).get_context_data(**kwargs)
文件 “C:\Users\gabriel\PycharmProjects\django-solo-testes\wvevn\lib\site-packages\django\views\generic\edit.py” 在 get_context_data 中 93. kwargs['form'] = self.get_form()
文件 “C:\Users\gabriel\PycharmProjects\django-solo-testes\wvevn\lib\site-packages\django\views\generic\edit.py” 在 get_form 45. return form_class(**self.get_form_kwargs())
异常类型:/comecando 处的 TypeError 异常值:'NoneType' 对象不可调用
编辑:我按照要求做了一些更改并更新了我的帖子,但它仍然不起作用。我现在得到的错误是说 NoneType 对象在
context = super(ComecandoView, self).get_context_data(**kwargs)行上是不可调用的。如果我对此发表评论并添加context {}代码可以正常工作,但它没有运行函数form_valid,我尝试将该函数内的内容打印到终端中并且没有任何反应,但代码仍在执行它应该执行的操作更改,除了不检索用户的输入。我也尝试将表单方法更改为post,但没有运气。
我想要做什么:我想根据用户的输入更新在视图中创建的图表(即,用户键入图表的日期范围,模板生成一个新图表更新值)。
我有一个 django 视图,它已经创建了具有预定义值的图形。
检查下面的代码,它工作正常。
views.py
class ComecandoView(FormView):
template_name = 'comecando.html'
form = GraphForm
def form_valid(self, form):
# store the user input here. These variables you can access then in your get_context_data method.
print('Hi') # Doesnt get called
self.q=form.cleaned_data['q']
return super(ComecandoView, self).form_valid(form)
def get_context_data(self, **kwargs):
#context = super(ComecandoView, self).get_context_data(**kwargs) # Commented this.
context = {} # ADDED THIS
lista_precos = []
lista_datas = []
for variacao in range(10500):
lista_precos.append(rjson['dataset']['data'][variacao][4])
lista_datas.append(rjson['dataset']['data'][variacao][0])
# Create a trace
trace = go.Scatter(
y = lista_precos,
x = lista_datas
)
data = [trace]
fig = go.Figure(data=data)
div = opy.plot(fig, auto_open=False, output_type='div')
context['graph'] = div
return context
template.html (comecando.html)
{% extends 'base.html' %}
{% block container %}
<form method="get">
<input type="text" name="q">
<input type="submit" value="Search">
</form>
</div>
{% if graph %}
<div class="row">
<div class="col s12">
{{ graph|safe }}
</div>
</div>
{% endif %}
{% endblock %}
forms.py
from django import forms
class GraphForm(forms.Form):
name = forms.CharField()
message = forms.CharField(widget=forms.Textarea)
def send_email(self):
pass
我想要的是让用户能够从组合框中选择一个值,或者在文本字段中输入一个值,并且在他单击一个按钮后,他输入的值将在我的视图中可用,以便我'将能够生成具有新值的新图表。
我的尝试:
views.py
我在基于类的视图中添加了这个方法,但没有按预期输出,我只能在 get 函数中使用表单“q”的值,而且,图表没有生成为以前是这样的。
def get(self, request, *args, **kwargs):
q = request.GET.get('q')
error = ''
if not q:
error = "error message"
return render(request, self.template_name, {'error': error})
comecando.html(模板)
<form method="get">
<input type="text" name="q">
<input type="submit" value="Search">
</form>
有很多与我的问题非常相似的主题,但我已经经历了很多但仍然无法解决它,这里有几个我尝试过应用于我的问题但没有解决的示例t 锻炼:
【问题讨论】:
-
您使用哪个库来生成绘图?在其他世界中,您的代码中的
go和opy是什么? -
@afonso.kim 它的阴谋
标签: python django python-3.x