有人知道什么是错的吗?我有一个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>
pay_date_form.py
的内容:
import datetime
from crispy_forms.helper import FormHelper
from crispy_forms.layout import Layout, Div, Column, HTML, Submit, Field
from django.forms import ModelForm
from django import forms
from primer8_base.utils import get_or_none
from primer8_insurance_policy.models import PaymentRate
from tiecase.widgets import DateTimeWidget
class PayDateForm(ModelForm):
payment_date=forms.DateField(required=False,
input_formats=['%d-%m-%Y'],
widget=DateTimeWidget
)
def __init__(self, *args, **kwargs):
super(PayDateForm, self).__init__(*args, **kwargs)
self.helper = FormHelper(self)
self.helper.form_id="add_pay_date_form"
self.helper.form_class = 'form-horizontal'
self.helper.all().wrap(Field, css_class="input-block-level")
self.helper.layout = Layout(
Div(
Column(
HTML("<h3>Wprowadź datę opłacenia/h3>"),
css_class='col-md-10 col-md-offset-1'),
'payment_date'
))
self.helper.layout.append(
Submit('save', 'Dodaj', css_class='submit_ajax'))
class Meta:
model = PaymentRate
exclude = ['amount', 'due_payment_date', 'accounting_date','is_paid','num_of_payment']
以下是一个观点:
@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'),
我有这个错误,我不知道为什么。也许扩展基础表单有问题吗?
答案 0 :(得分:4)
这是错误的:
$('.card').each(function(i) {
$(this).delay((i + 1) * 100).fadeIn(300);
});
您没有将form = PayDateForm(request, PaymentRate)
对象传递给表单,您传递提交的表单数据,即
request
(解释:你得到的错误是因为Django期待一个类似dict的对象,所以它试图调用它的form = PayDateForm(request.POST, PaymentRate)
方法来获取特定的数据键,因此{{1} })
所以你的观点应该是这样的:
get
答案 1 :(得分:1)
您应该使用request.POST
更改此
form = PayDateForm(request, PaymentRate)
到这个
form = PayDateForm(request.POST or None, PaymentRate)