Python “SearchForm”对象没有属性“get”
我试图用DateField创建SearchForm,但当我发送data method=post时,表单看不到属性“get”。错误在哪里 forms.py views.py index.htmlPython “SearchForm”对象没有属性“get”,python,django,datefield,Python,Django,Datefield,我试图用DateField创建SearchForm,但当我发送data method=post时,表单看不到属性“get”。错误在哪里 forms.py views.py index.html Django视图应该返回httpresponse对象。但您的搜索视图将返回表单对象。您可以将serch视图重写为类似以下内容以修复错误: def search(request): if request.method == 'POST': form = SearchForm(data
Django视图应该返回httpresponse对象。但您的搜索视图将返回表单对象。您可以将serch视图重写为类似以下内容以修复错误:
def search(request):
if request.method == 'POST':
form = SearchForm(data=request.POST)
if form.is_valid():
#Do something for examlpe
HttpResponseRedirect(reverse("name:second"))
else:
form = SearchForm()
context = {}
context['search_form'] = form
return render(request, 'name/index.html', context)
Django视图应该返回httpresponse对象。但您的搜索视图将返回表单对象。您可以将serch视图重写为类似以下内容以修复错误:
def search(request):
if request.method == 'POST':
form = SearchForm(data=request.POST)
if form.is_valid():
#Do something for examlpe
HttpResponseRedirect(reverse("name:second"))
else:
form = SearchForm()
context = {}
context['search_form'] = form
return render(request, 'name/index.html', context)
表单不应具有get、post或其他调度的HTTP动词匹配方法,因为它用于表示数据并对其进行操作。更具体地说,它可以方便地将任何有意义的操作(即验证和清理以外的操作)委托给基础结构,不满足HTTP请求-后者是视图的责任
当您的搜索视图必须返回与HttpResponse兼容的对象时,它会返回一个SearchForm实例,这就是错误产生的原因。请注意,如果响应。get'X-Frame-Options'不是None:
要解决此问题,请确保从搜索视图返回renderrequest,'name/index.html',{'form':search_form}。表单不应具有get、post或其他调度的HTTP谓词匹配方法,因为它用于表示数据并对其进行更具体的操作,方便地将任何有意义的操作(即除验证和清理之外的任何操作)委托给底层基础设施,而不是满足HTTP请求,后者是视图的责任
当您的搜索视图必须返回与HttpResponse兼容的对象时,它会返回一个SearchForm实例,这就是错误产生的原因。请注意,如果响应。get'X-Frame-Options'不是None:
要解决此问题,请确保从搜索视图返回renderrequest,'name/index.html',{'form':search_form}。哦,谢谢,这很有效。但是为什么在表单中我使用这个service=forms.ModelChoiceFieldqueryset=service.objects.all,widget=forms.Select它在没有httpresponse对象的情况下可以工作?@McRain26在这种情况下,您的表单可能无效,返回的搜索表单永远无法访问。哦,谢谢,这很有效。但是为什么在表单中我使用这个service=forms.ModelChoiceFieldqueryset=service.objects.all,widget=forms.Select它在没有httpresponse对象的情况下工作?@McRain26在这种情况下,您的表单可能无效,并且永远无法访问返回搜索表单。
<form method="post" action="{% url 'name:search' %}">
{% csrf_token %}
{{ search_form.as_p }}
<button name="submit">Search</button>
</form>
Environment:
Request Method: POST
Request URL: http://127.0.0.1:8000/search_result
Django Version: 2.0.5
Python Version: 3.6.3
Traceback:
File "C:\Users\Александр\AppData\Local\Programs\Python\Python36\lib\site-packages\django\core\handlers\exception.py" in inner
35. response = get_response(request)
File "C:\Users\Александр\AppData\Local\Programs\Python\Python36\lib\site-packages\django\utils\deprecation.py" in __call__
97. response = self.process_response(request, response)
File "C:\Users\Александр\AppData\Local\Programs\Python\Python36\lib\site-packages\django\middleware\clickjacking.py" in process_response
26. if response.get('X-Frame-Options') is not None:
Exception Type: AttributeError at /search_result
Exception Value: 'SearchForm' object has no attribute 'get'
def search(request):
if request.method == 'POST':
form = SearchForm(data=request.POST)
if form.is_valid():
#Do something for examlpe
HttpResponseRedirect(reverse("name:second"))
else:
form = SearchForm()
context = {}
context['search_form'] = form
return render(request, 'name/index.html', context)