python - AttributeError:“str”对象没有属性“get”(django 视图)
问题描述
这是ajax操作和django视图之间的通信。
有一个表单,如果我单击表单的提交按钮,则执行 Ajax 代码。
但它总是出错,写在下面。我无法弄清楚它的原因。我想这与表单如何传达给视图有关,但我不知道如何解决它。
Internal Server Error: /makeevent
Traceback (most recent call last):
File "/usr/local/lib/python3.7/site-packages/django/core/handlers/exception.py", line 34, in inner
response = get_response(request)
File "/usr/local/lib/python3.7/site-packages/django/core/handlers/base.py", line 115, in _get_response
response = self.process_exception_by_middleware(e, request)
File "/usr/local/lib/python3.7/site-packages/django/core/handlers/base.py", line 113, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/workspace/CalendarProject/cencal/views.py", line 42, in makeevent
if form.is_valid():
File "/usr/local/lib/python3.7/site-packages/django/forms/forms.py", line 185, in is_valid
return self.is_bound and not self.errors
File "/usr/local/lib/python3.7/site-packages/django/forms/forms.py", line 180, in errors
self.full_clean()
File "/usr/local/lib/python3.7/site-packages/django/forms/forms.py", line 381, in full_clean
self._clean_fields()
File "/usr/local/lib/python3.7/site-packages/django/forms/forms.py", line 393, in _clean_fields
value = field.widget.value_from_datadict(self.data, self.files, self.add_prefix(name))
File "/usr/local/lib/python3.7/site-packages/django/forms/widgets.py", line 258, in value_from_datadict
return data.get(name)
AttributeError: 'str' object has no attribute 'get'
Javascript代码:
function makeEvent(event){
event.preventDefault();
var year = event.target.childNodes[3].children[0].value.slice(0,4);
var month = event.target.childNodes[3].children[0].value.slice(5,7);
var day = event.target.childNodes[3].children[0].value.slice(8,10);
$.ajax({
type: "POST",
url: "{% url 'makeevent' %}",
data: {'form': $("#makeEventForm").serialize(), 'csrfmiddlewaretoken': '{{ csrf_token }}'},
dataType: "json",
success: function(response){
console.log(response);
refreshCalendarAjax(year, month);
listevent(year, month, day);
document.getElementById("sidebar").insertAdjacentHTML( 'afterbegin', "Create new event successful." );
},
error: function(request,status,error){
if (status == 599) {
$("#sidebar").html = error;
} else {
console.log(error);
}
},
});
}
Django查看代码:
def makeevent(request):
if request.method == "POST":
form = EventForm(request.POST['form'])
if form.is_valid():
form.save()
return HttpResponse("Successful", status=200)
else:
return HttpResponse(form.errors, status=599)
else:
print("NOT POST");
谢谢阅读!
解决方案
尝试 Jsonify 响应字符串。示例: HttpResponse({ "Status": "Successful" })
推荐阅读
- android - 发现两个 getter 或属性的区分大小写冲突的字段:c
- python - 出于什么原因使 numpy MGrid 通过复数进行一些索引约定?
- android - 使用 SimpleExoPlayer 和 Room 作为离线缓存
- javascript - 如何让两个 JS Splice 一起工作
- c# - Windows 还原位置有时不起作用
- python - 跨数据框计算不同价格类型的价格 - Python
- javascript - Discord.JS 等待消息
- google-apps-script - 通过 Apps 脚本仅将特定范围导出为 pdf 有哪些参数?
- java - 如何列出所有大于给定参数的文件?
- css - 带有步骤的文本字体粗细功能的 SASS