Во-первых, вам нужно связать функцию SOAPRequest
Самый простой способ сделать это - сделать ее функцией стрелки
SOAPRequest = () => {
Затем вы можете остановить this
от потери, назначив ее переменная внутри вашей функции.
SOAPRequest = () => {
const that = this; // assign this to the variable that
var xmlhttp = new XMLHttpRequest();
xmlhttp.open("POST", this.url, true);
// build SOAP request
var sr =
"<soapenv:Envelope>" +
"<soapenv:Header/>" +
"<soapenv:Body>" +
"<ns:InquiryRequest>" +
"</ns:InquiryRequest>" +
"</soapenv:Body>" +
"</soapenv:Envelope>";
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4) {
if (xmlhttp.status == 200) {
console.log("success", xmlhttp.responseText);
console.log("--------------------------------------");
console.log(that.state); // use that instead of this
}
}
};
// Send the POST request
xmlhttp.setRequestHeader("Content-Type", "text/xml");
xmlhttp.send(sr);
};
Вы хотите использовать context_instance
и RequestContext
s.
Сначала добавьте в начало вашего views.py
:
from django.template import RequestContext
Затем обновите все ваши представления так, чтобы они выглядели так:
def someview(request, ...)
...
return render_to_response('viewtemplate.html', someContext, context_instance=RequestContext(request))
В вашем settings.py
, add:
TEMPLATE_CONTEXT_PROCESSORS = (
'django.core.context_processors.auth',
...
'myproj.app.context_processors.dynamic',
'myproj.app.context_processors.sidebar',
'myproj.app.context_processors.etc',
)
Каждый из этих context_processors
является функцией, принимает объект запроса
и возвращает контекст в виде словаря. Просто поместите все функции в context_processors.py
внутри соответствующего приложения. Например, блог может иметь боковую панель со списком последних записей и комментариев. context_processors.py
просто определит:
def sidebar(request):
recent_entry_list = Entry.objects...
recent_comment_list = Comment.objects...
return {'recent_entry_list': recent_entry_list, 'recent_comment_list': recent_comment_list}
Вы можете добавить столько или меньше, сколько хотите.
Для получения дополнительной информации обратитесь к Документам по шаблонам Django .
или используйте универсальное представление , поскольку им автоматически передается контекст запроса.
можно использовать простое прямое универсальное представление шаблона, чтобы избежать необходимости импортировать / передать в контексте запроса.
Контекстные процессоры и RequestContext (см. Ответ Тайлера) являются способом получения данных, которые используются при каждой загрузке страницы. Для данных, которые могут вам понадобиться в различных представлениях, но не во всех (особенно данных, которые на самом деле не связаны с основной целью представления, но отображаются в чем-то вроде боковой панели навигации), часто имеет смысл определить собственный шаблон тег для получения данных.