def uploadImage(request):
if request.method == 'POST':
form = forms.FileUploadForm(data=request.POST, files=request.FILES)
if form.is_valid():
print(type(request.FILES['FILE']))
else:
print(form.errors)
return HttpResponse('test')
$('#file').change(function () {
var formdata = new FormData($(this)[0]);
if (formdata) {
formdata.append("image", file);
$.ajax({
url: "uploadImage",
type: "POST",
data: formdata,
headers: { "X-CSRFToken": getCookie("csrftoken") },
processData: false,
contentType: false,
success: function () {
console.log('soccess');
},
error: function (error) {
console.log(error);
}
});
}
});
function getCookie(c_name) {
if (document.cookie.length > 0) {
c_start = document.cookie.indexOf(c_name + "=");
if (c_start != -1) {
c_start = c_start + c_name.length + 1;
c_end = document.cookie.indexOf(";", c_start);
if (c_end == -1) c_end = document.cookie.length;
return unescape(document.cookie.substring(c_start, c_end));
}
}
return "";
}
class FileUploadForm(forms.Form):
file_source = forms.FileField()
c.callproc('"GetAllNotes"', (float(longitude), float(latitude)))
- вот так работает. Получаю вот такой результат - "[(1, 'Max', 'АВ', Decimal('55.8694248'), Decimal('37.6647453')), (2, 'Nick', 'afsd', Decimal('55.8691788'), Decimal('37.6650843')), (3, 'Jason', 'выаф', Decimal('55.8697598'), Decimal('37.6647674'))]". Вы случайно не знаете как конвертировать это в json. Пытаюсь вот таким способом:r = json.load(c.fetchall())
'list' object has no attribute 'read'
SELECT
HotelsRooms.roomTypeID as RoomType,
HotelsRooms.imageAdress as Image,
HotelsRooms.price * @nights + tours.Price as Price
FROM dbo.HotelsRooms
INNER JOIN dbo.Hotels as hotels ON HotelsRooms.HotelID = hotels.Id
INNER JOIN tours ON tours.HotelID = hotels.Id
WHERE hotels.Name = @hotelName and DATEDIFF(DAY,tours.FromDate, tours.ToDate) = @nights
def getNearestNotes(request, longitude, latitude):
if request.method == 'GET':
c = connection.cursor()
r = None
try:
#c.callproc('GetAllNotes', (float(longitude), float(latitude)))
c.execute("SELECT routine_name FROM information_schema.routines WHERE routine_type='FUNCTION' AND specific_schema='public'")
r = c.fetchone()
finally:
c.close()
return HttpResponse(str(r))
else:
return HttpResponse('needGetMethod')
('earth_distance',), хотя у меня их больше 20 точно. Но моя одна. Все остальные (и earth_distance) создались, когда extentions добавил.
ОШИБКА: тип "double" не существует
LINE 1: select * from GetAllNotes('28.7'::double, '23.2'::double)
def getNearestNotes(request, longitude, latitude):
if request.method == 'GET':
c = connection.cursor()
r = None
try:
c.callproc('GetAllNotes', (longitude, latitude))
r = c.fetchone()
finally:
c.close()
return HttpResponse(str(r))
else:
return HttpResponse('needGetMethod')
ОШИБКА: функция getallnotes(unknown, unknown) не существует
LINE 1: SELECT * FROM GetAllNotes('28.7','23.2')
^
HINT: Функция с данными именем и типами аргументов не найдена. Возможно, вам следует добавить явные приведения типов.
create function "GetAllNotes"(long double precision, lat double precision) returns TABLE(userid integer, username character varying, notename character varying, notelong double precision, notelat double precision)
language plpgsql
as
$$
BEGIN
RETURN query (SELECT notes."userid", users."name", notes."name", notes."longitude", notes."latitude" FROM notes INNER JOIN users ON notes."userid" = users."id" WHERE (point(long, lat) <@> point(notes."longitude", notes."latitude") <= 0.124274) );
END
$$;
отдельно — табличную, то есть два запроса- вы имеете ввиду http запросы или запросы внутри процедуры?
есть параметры OUT, то есть выходные, вы намекаете на то, что часть данных из процедуры можно вернуть в переменную C# и потом в вставить в объект перед сеарилизацией?
может ли ваш промежуточный слой их обрабатывать.промежуточный слой - это API?
А то опять получаю ошибку -
Сделал вот такой запрос, чтобы определить тип переменных которые я передаю:
получается нужно конвертировать данные в самой postgres функции? Но ведь этого нельзя сделать на этапе передачи параметров(add_imgae(image_url character varying, user_password character varying)). Пробовал еще так, чтобы по аналогии с float(var) было:
, но не помогло. Или как гулить такое? По запросу ничего не нашел.
Еще так пробовал:
, как вы раньше писали, но не помогло.