我正在django视图中的字典中传递一些数据,并且我想在我的javascript代码中访问字典数据以在html中显示数据。但是,每当我打印传递的上下文时,它只会在控制台上打印“成功”,而不是实际数据。
这是我的字典结构: context ['search_successful'] =“某个字符串” 在对视图进行Ajax调用后,我将此字典传递给了我的成功函数。目前,我只是传递HTTPResponse('true',context)。
在用javascript代码收集数据之后,我只想打印上下文的数据,这将在控制台上提供“某些字符串”,但每次都会获得成功。
这是我的观点:
def daily_object_search(request):
context = {'search_successful': "No"}
if request.method == 'POST':
object_name = request.POST['search_object_name']
print("The query for search :", object_name)
if len(object_name) <= 2:
print("The length of the object name :", len(object_name))
return HttpResponse('invalid_query')
my_cursor = mydb.cursor()
sql = "select * from education_fruits where tag = '" + object_name + "'"
my_cursor.execute(sql)
result = my_cursor.fetchall()
print(result)
if my_cursor.rowcount <= 0:
print("No object found")
return HttpResponse('false')
context['search_successful'] = "Yess"
return HttpResponse('true', context)
这是我的模板:
<script type="text/javascript">
$(document).on('submit', '#search_object', function(e){
e.preventDefault();
$.ajax({
type: 'POST',
url: '{% url 'daily_object_search' %}',
data: {
search_object_name: $('#search_my_object').val(),
csrfmiddlewaretoken: $('input[name=csrfmiddlewaretoken]').val()
},
success: function(data, context){
if(data == "true"){
alert('This Object is Present');
/* Print the context data by creating a html tag and appending the context information to a <h1> tag by doing document.id.innerHTML = context['search_successful']*/
console.log(context);
}
else if(data == "invalid_query"){
alert("Please enter a valid object to be searched");
}
else{
alert('This object is not present');
}
}
});
});
</script>
控制台应该给我类似“ search_successful:是”或“ search_successful:否”的东西,但每次都会给我带来成功。请帮忙!预先感谢。
答案 0 :(得分:0)
上下文字典可以传递给render
(https://docs.djangoproject.com/en/2.1/topics/http/shortcuts/#render),在文档https://docs.djangoproject.com/en/2.1/ref/request-response/#httpresponse-objects的HTTPResponse
中找不到上下文的引用
如果要返回复杂值,请在响应中返回json作为内容。
您始终将内容设置为true
(经过编码),因此实际上并不能区分任何情况,在我看来这是无用的。
我建议您使用状态码来区分各种情况,例如invalid_query
或400 Bad Request
,即No object found
。在这种情况下,您应该在ajax调用中使用错误处理程序来捕获此否定响应。
如果您只想使用成功处理程序,则可以使用这样的json:
404 Not Found
因此,如果您希望传递获取的元素,则可以在json中添加密钥