Trong hàm xem của tôi, tôi muốn trả về một đối tượng json (data1) và một số văn bản/html (biểu mẫu). Điều này có thể không?Có thể trả lại một HttpResponse trong django với văn bản và một đối tượng json không?
Dưới đây là một phần của views.py tôi:
if request.is_ajax() and request.method == 'POST':
...
if form.is_valid():
answer = form.cleaned_data['answer'] # Answer extracted from form is also a string
a1 = ques1.correct_answer
if a1 == answer:
test1 = question_list.get(id=nextid)
form = AnswerForm(test1)
ques1 = question_list.filter(id=nextid) # Filter next question as <qs>
data1 = serializers.serialize("json",ques1) # Json-ize
# ********EDITED HERE **********
variables1 = Context({
'form' : form,
'q1' : data1,
})
#response = HttpResponse()
#response['data1'] = response.write(data1)
#response['form'] = response.write(form)
if nextid <= qsnlen:
return HttpResponse(variables1, mimetype="application/json")
#return HttpResponse(response)
else:
...
tôi muốn gửi lại cả html hình thức và đối tượng ques1 json. Tôi có thể làm cái này như thế nào? Cảm ơn trước.
Chỉ cần được 100% rõ ràng - Tôi gửi một yêu cầu POST HttpRequest mẫu dữ liệu (thông qua ajax), vì vậy tôi chỉ có thể định tuyến nó đến một chức năng xem. Trong kịch bản của tôi, khi người dùng gửi câu trả lời cho một câu hỏi, tôi muốn lấy dữ liệu đó, làm những việc với nó, và sau đó gửi lại một đối tượng json câu hỏi khác và một biểu mẫu đầu vào mới. –
Bạn có thể trả về một câu trả lời, với nhiều đối tượng trong ngữ cảnh. Điều này có thể chỉ là một _mime type_ - vì vậy bạn có thể gửi nhiều mục trong một phản hồi; nhưng bạn * không thể * kết hợp hai loại mime trong một câu trả lời. Trong ví dụ của bạn, bạn đang đặt mimetype là 'application/json'. Bạn về mặt kỹ thuật có thể gửi bất cứ điều gì bạn muốn và đặt mimetype như bất cứ điều gì, nhưng điều này sẽ không làm những gì bạn muốn vào cuối khách hàng. Để gửi HTML cho biểu mẫu và đối tượng JSON - thêm đối tượng JSON vào ngữ cảnh của phản hồi. –
Vui lòng kiểm tra mã đã chỉnh sửa ở trên. Tôi đã thêm cả biểu mẫu và đối tượng json vào ngữ cảnh, và tôi gửi nó trở lại. Ý bạn là vậy đúng không? Liệu đối tượng json có đọc chính xác ở phía máy khách (tôi đang sử dụng jquery) không? Đọc điều này ở phía khách hàng sẽ là một chút ác mộng, tôi nghĩ vậy. Tôi đã không sử dụng RequestContext vì có nhiều biến hơn được trả lại mà tôi không cần. Cảm ơn bạn đã giúp đỡ. –