Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用基于django类的视图获取用户输入_Python_Django_Python 3.x - Fatal编程技术网

Python 如何使用基于django类的视图获取用户输入

Python 如何使用基于django类的视图获取用户输入,python,django,python-3.x,Python,Django,Python 3.x,编辑2:使用以下行完成回溯:context=superComecandoView,self.get_context_data**kwargs未注释。如果我将此行更改为context={},我不会得到任何错误,但仍然无法使用用户的变量 响应=包装的回调请求,*回调参数,**回调参数 文件 C:\Users\gabriel\PycharmProjects\django solo testes\wvevn\lib\site packages\django\views\generic\base.py 鉴

编辑2:使用以下行完成回溯:context=superComecandoView,self.get_context_data**kwargs未注释。如果我将此行更改为context={},我不会得到任何错误,但仍然无法使用用户的变量

响应=包装的回调请求,*回调参数,**回调参数 文件 C:\Users\gabriel\PycharmProjects\django solo testes\wvevn\lib\site packages\django\views\generic\base.py 鉴于 68返回self.dispatchrequest,*args,**kwargs

文件 C:\Users\gabriel\PycharmProjects\django solo testes\wvevn\lib\site packages\django\views\generic\base.py 派遣 88返回handlerrequest,*args,**kwargs

文件 C:\Users\gabriel\PycharmProjects\django solo testes\wvevn\lib\site packages\django\views\generic\edit.py 进门 174将self.render\u返回给\u responseself.get\u context\u数据

文件 C:\Users\gabriel\PycharmProjects\django solo testes\papaBelini\core\views.py 在获取上下文数据中 107context=superComecandoView,self.get\u context\u data**kwargs

文件 C:\Users\gabriel\PycharmProjects\django solo testes\wvevn\lib\site packages\django\views\generic\edit.py 在获取上下文数据中 93kwargs['form']=self.get_form

文件 C:\Users\gabriel\PycharmProjects\django solo testes\wvevn\lib\site packages\django\views\generic\edit.py 以获得形式 45返回表单\u类**self.get\u表单\u kwargs

异常类型:/comecando异常值处的TypeError:“非类型” 对象不可调用

编辑:我按要求做了一些更改并更新了我的帖子,但仍然不起作用。我现在遇到的错误是,在context=superComecandoView,self.get\u context\u data**kwargs行中,不可调用非类型对象。如果我对此进行注释并添加上下文{},代码可以正常工作,但它没有运行函数form_valid,我尝试将该函数中的内容打印到终端中,但什么也没有发生,但代码在更改后仍在做它应该做的事情,除了不检索用户的输入。我也尝试过将form方法改为post,但没有成功

我想做的是:我想根据用户的输入更新在视图中创建的图形,即,用户键入图形的日期范围,模板生成具有更新值的新图形

我有一个django视图,它已经创建了带有预定义值的图形

检查下面的代码,它工作正常

views.py

template.html comecando.html

我希望用户能够从组合框中选择一个值,例如,或在文本字段中键入一个值,单击按钮后,他键入的值将在我的视图中可用,以便我能够生成一个具有新值的新图形

我所尝试的:

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模板

有很多话题与我的问题非常相似,但我经历了很多,但仍然无法解决。以下是一些我尝试应用于我的问题但没有解决的例子:


你有一个很好的起点,只需要正确地完成任务

将父视图从TemplateView更改为FormView,并调整必要的内容:创建表单,将其添加到视图,调整模板

然后删除get方法并添加以下内容:

def form_valid(self, form):
    # store the user input here. These variables you can access then in your get_context_data method.
    self.q=form.cleaned_data['q']
    return super(ComecandoView, self).form_valid(form)
您需要将模板更改为: {{form.as_table}}


并替换获取有意义的值的行:q必须替换为表单名或消息的字段名。

我也遇到了类似的问题。我将输入参数传递到url并重新加载页面

from django.shortcuts import reverse

def get_success_url(self):
    return reverse('<webpage>', kwargs={'q': self.request.POST.get('q')})
然后您可以通过一些方法从kwargs访问它,比如使用kwargs['q']获取上下文数据


在这种情况下,您需要更新URL以保存参数“q”。您可以将“?P\d+/$”附加到url以实现此功能

您使用哪个库生成绘图?在另一个世界里,你的代码中的go and opy是什么?@afonso.kim其详细内容感谢你的回答,我尝试了你所说的,但仍然不起作用,我更新了我的主题,解释了发生了什么,我尝试了什么,并发布了我现在的代码。我刚刚添加了对错误的完整跟踪。我尝试过改变很多事情,首先,我尝试在form_有效函数中打印self.q,但什么都没有发生。我还尝试在get_context_data函数中打印self.q,但随后得到错误:ComecandoView没有属性q。所有这些打印都是在向comecando html页面输入文本字段提交随机文本后进行的
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})
<form method="get">
  <input type="text" name="q">
  <input type="submit" value="Search">
</form> 
def form_valid(self, form):
    # store the user input here. These variables you can access then in your get_context_data method.
    self.q=form.cleaned_data['q']
    return super(ComecandoView, self).form_valid(form)
from django.shortcuts import reverse

def get_success_url(self):
    return reverse('<webpage>', kwargs={'q': self.request.POST.get('q')})