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 WSGIRequest对象没有属性get_Python_Django - Fatal编程技术网

Python WSGIRequest对象没有属性get

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

有人知道怎么了吗?我有一个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 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_函数,如以下回答所述: