Python WSGIRequest对象没有属性get
有人知道怎么了吗?我有一个wsgi错误。我想在费率中添加一些信息,特别是日期。但是,我遇到了以下wsgi错误: 错误:Python WSGIRequest对象没有属性get,python,django,Python,Django,有人知道怎么了吗?我有一个wsgi错误。我想在费率中添加一些信息,特别是日期。但是,我遇到了以下wsgi错误: 错误: AttributeError at /polisy/add_paydate_form/35/ 'WSGIRequest' object has no attribute 'get' Request Method: GET Request URL: http://127.0.0.1:8000/polisy/add_paydate_form/35/ Django Ve
AttributeError at /polisy/add_paydate_form/35/
'WSGIRequest' object has no attribute 'get'
Request Method: GET
Request URL: http://127.0.0.1:8000/polisy/add_paydate_form/35/
Django Version: 1.7.7
Exception Type: AttributeError
Exception Value:
'WSGIRequest' object has no attribute 'get'
Exception Location: D:\praca\tiecase\lib\site-packages\django\forms\widgets.py in value_from_datadict, line 228
Python Executable: D:\praca\tiecase\Scripts\python.exe
Python Version: 3.4.0
Python Path:
['D:\\praca\\tiecase\\tiecase\\tlb',
'D:\\praca\\tiecase\\tiecase\\tlb',
'C:\\WINDOWS\\SYSTEM32\\python34.zip',
'D:\\praca\\tiecase\\DLLs',
'D:\\praca\\tiecase\\lib',
'D:\\praca\\tiecase\\Scripts',
'C:\\Python34\\Lib',
'C:\\Python34\\DLLs',
'D:\\praca\\tiecase',
'D:\\praca\\tiecase\\lib\\site-packages']
Server time: Tue, 28 Jul 2015 14:36:43 +0200
Error during template rendering
In template D:\praca\tiecase\lib\site-packages\crispy_forms\templates\bootstrap3\field.html, error at line 25
'WSGIRequest' object has no attribute 'get'
15
16 {% if field|is_checkboxselectmultiple %}
17 {% include 'bootstrap3/layout/checkboxselectmultiple.html' %}
18 {% endif %}
19
20 {% if field|is_radioselect %}
21 {% include 'bootstrap3/layout/radioselect.html' %}
22 {% endif %}
23
24 {% if not field|is_checkboxselectmultiple and not field|is_radioselect %}
25 {% if field|is_checkbox and form_show_labels %}
26 {% if label_class %}
27 <div class="controls col-lg-offset-{{ label_size }} {{ field_class }}">
28 {% endif %}
29 <label for="{{ field.id_for_label }}" class="{% if field.field.required %} requiredField{% endif %}">
30 {% crispy_field field 'class' 'checkbox' %}
31 {{ field.label|safe }}
32 {% include 'bootstrap3/layout/help_text_and_errors.html' %}
33 </label>
34 {% if label_class %}
35 </div>
以下是一个视图:
@login_required
def add_pay_date_form(request, paymentrate_id):
template_name = "policy/pay_date_modal_form.html"
rate = get_object_or_404(PaymentRate, id=paymentrate_id)
form = PayDateForm(request, PaymentRate)
if request.method == "POST":
if form.is_valid():
form.save()
return JsonResponse({'success': True})
return render_to_response(template_name, {
'form': form,
'rate': rate
}, context_instance=RequestContext(request))
模板:
{% extends "base_form.html" %}
{% block "additional" %}
<script type="text/javascript">
$(document).ready(function(){
$("#{{form.name.auto_id}}").blur(function(){
if(!$('#{{form.short_name.auto_id}}').val()) {
$('#{{form.short_name.auto_id}}').val($("#{{form.name.auto_id}}").val());
}
});
});
$("#add_pay_date_form").submit(function (e) {
e.preventDefault();
var formData = new FormData($(this)[0]);
$.ajax({
type: 'POST',
async: false,
cache: false,
contentType: false,
processData: false,
url: '{% url "add_pay_date_form" paymentrate.id %}',
data: formData,
success: function (response, status, xhr) {
if (xhr.getResponseHeader('Content-Type') == 'application/json')
{ console.log(xhr.getResponseHeader('Content-Type'));
$.magnificPopup.close();
} else {
$('#{{ form.helper.form_id }}_panel').replaceWith(response);
}
}
});
console.log('test');
});
</script>
{% endblock "additional" %}
和网址:
url(r'add_paydate_form/(?P<paymentrate_id>\d+)/$', add_pay_date_form, name='add_pay_date_form'),
我犯了这个错误,我不知道为什么。扩展基本表单可能有问题?这是错误的:
form = PayDateForm(request, PaymentRate)
您不会将请求对象传递给表单,而是传递提交的表单数据,即
form = PayDateForm(request.POST, PaymentRate)
解释:您得到的错误是因为Django需要一个类似dict的对象,因此它尝试调用该对象的get方法来获取数据的特定键,因此“WSGIRequest”对象没有属性“get”
因此,您的视图应该如下所示:
@login_required
def add_pay_date_form(request, paymentrate_id):
template_name = "policy/pay_date_modal_form.html"
rate = get_object_or_404(PaymentRate, id=paymentrate_id)
form = PayDateForm(request.POST or None, PaymentRate)
if form.is_valid():
form.save()
return JsonResponse({'success': True})
return render_to_response(template_name, {
'form': form,
'rate': rate
}, context_instance=RequestContext(request))
这是错误的:
form = PayDateForm(request, PaymentRate)
您不会将请求对象传递给表单,而是传递提交的表单数据,即
form = PayDateForm(request.POST, PaymentRate)
解释:您得到的错误是因为Django需要一个类似dict的对象,因此它尝试调用该对象的get方法来获取数据的特定键,因此“WSGIRequest”对象没有属性“get”
因此,您的视图应该如下所示:
@login_required
def add_pay_date_form(request, paymentrate_id):
template_name = "policy/pay_date_modal_form.html"
rate = get_object_or_404(PaymentRate, id=paymentrate_id)
form = PayDateForm(request.POST or None, PaymentRate)
if form.is_valid():
form.save()
return JsonResponse({'success': True})
return render_to_response(template_name, {
'form': form,
'rate': rate
}, context_instance=RequestContext(request))
您应该使用request.POST
改变这个
form = PayDateForm(request, PaymentRate)
对此
form = PayDateForm(request.POST or None, PaymentRate)
您应该使用request.POST
改变这个
form = PayDateForm(request, PaymentRate)
对此
form = PayDateForm(request.POST or None, PaymentRate)
看到你找到了你的解决方案,但有一个提示,检查Djangos TemplateResponse。它类似于渲染_到_响应。一个例子;render_to_responsetemplate_name,{'form':form,'rate':rate},context_instance=RequestContextrequest将成为TemplateResponserequest,template_name,{…}如果您是从Google获得此功能的,因为在使用自定义装饰程序时出现相同的错误,这可能是因为您正在执行@wraps而不是@wrapsview_函数,正如本答案中所解释的:请参阅您找到的解决方案,但有一个提示,请检查Djangos TemplateResponse。它类似于渲染_到_响应。一个例子;render_to_responsetemplate_name,{'form':form,'rate':rate},context_instance=RequestContextrequest将成为TemplateResponserequest,template_name,{…}如果您是从Google获得此功能的,因为在使用自定义装饰程序时出现相同的错误,这可能是因为您正在执行@wraps而不是@wrapsview_函数,如以下回答所述: