Обработка ошибок с использованием JQuery Terminal Plugin и Django с jsonrpc
Просто развлекаюсь и пытаюсь выучить JQuery и Django одновременно. Я думал, что было бы неплохо написать терминальное приложение на основе браузера.
Вот фон:
- Мое приложение использует здесь jsonrpc django-json-rpc:
https://github.com/samuraisam/django-json-rpc И терминальный плагин Jquery здесь: http://terminal.jcubic.pl/
Моя консольная страница выглядит так:
{% load staticfiles %}
<!DOCTYPE HTML>
<html>
<head>
<script src="http://code.jquery.com/jquery-1.7.2.min.js"></script>
<script src="{% static "goat/jquery.terminal-0.7.10.min.js" %}"></script>
<link rel="stylesheet" type="text/css" href="{% static "goat/jquery.terminal.css" %}">
</head>
<body>
<div id="term"></div>
<script>
jQuery(function($) {
$('#term').terminal("http://goatgruff.com/json/", {
greetings: "Menu: (R)egister (L)ogin"});
});
</script>
</body>
</html>
Мой json views.py использует те же примеры, что и json-rpc...
from jsonrpc import jsonrpc_method
@jsonrpc_method('sayHello')
def whats_the_time(request, name='Lester'):
return "Hello %s" % name
@jsonrpc_method('gimmeThat', authenticated=True)
def something_special(request, secret_data):
return {'sauce': ['authenticated', 'sauce']}
Здорово. Итак, вопрос:
Когда я набираю в терминале "sayHello Matt", вызов Ajax работает и отвечает "Hello Matt". Просто душка Но если я ввожу метод, которого нет в views.py, я получаю ужасную ошибку AJAX.
Я хотел бы хорошо обработать эту ошибку и сказать пользователю, что нет метода. Так как я должен называть методы в представлении, у меня не может быть обработчика ошибок там. Интересно, должен ли я добавить try / catch в urls.py или мой JQuery должен обработать ошибку, анализируя все, что возвращается - я не уверен, как будет выглядеть этот объект и как я получу результат.
Несколько указателей в правильном направлении помогут мне учиться.
Спасибо,
Matt
1 ответ
Хорошо, я понял это самостоятельно. Сначала я начал играть в файле exceptions.py в jsonrpc. Но вместо того, чтобы переопределять сообщения об ошибках, поступающие от jsonrpc, лучше просто сделать простой ответ об ошибке из JQuery Terminal. Поэтому я просто прокомментировал более информативный ответ и возвратил общую "недопустимую команду", чтобы пользователь не видел многословия, которое он не понимал.
function make_basic_json_rpc_interpreter(url) {
var service = function(method, params) {
self.pause();
$.jrpc(url, method, params, function(json) {
if (!json.error) {
display_object(json.result);
} else {
self.error('[RPC] ' + json.error.message);
}
self.resume();
}, function(xhr, status, error) {
if (status !== 'abort') {
//self.error('[AJAX] ' + status +
// ' - Server reponse is: \n' +
// xhr.responseText);
self.error('Invalid Command');
}
self.resume();
});