2016-12-14 5 views
0

Я пытаюсь создать файл KML «на лету» для загрузки пользователем. Я играю с библиотекой KML в python для создания и сохранения KML, но я хочу вернуть файл как собственную загрузку объявлений. По сути, если пользователь в моем приложении нажимает на ссылку bam, KML генерируется и загружается пользователем, нажимая на ссылку. Код у меня не работает, и я предполагаю, что мой ответ не настроен правильно:Создание файла и возвращение его в Django в представлении

в views.py:

def buildKML(request): 
    # Create the HttpResponse object with the appropriate PDF headers. 

    response = HttpResponse(content_type='application/kml') 
    response['Content-Disposition'] = 'attachment; filename="botanicalgarden.kml"' 
    #just testing the simplekml library for now 
    kml = simplekml.Kml() 
    kml.newpoint(name="Kirstenbosch", coords=[(18.432314,-33.988862)]) # lon, lat, optional height 
    kml.save('botanicalgarden.kml') 

    return response 

Я получаю ошибку работает этот метод, когда я нажимаю ссылку или Гото ссылка:

No results - Empty KML file

Я предполагаю, что это происходит потому, что имя файла = и окончательное, что сохраняется не один в том же самом.

ответ

1

для simplekml модуля есть функция, чтобы получить KML в виде строки вместо сохранения в файл, так что первый инициализацию ответа от Kml строки & возвращения HttpResponse объекта

kml = simplekml.Kml() 
kml.newpoint(name="Kirstenbosch", coords=[(18.432314,-33.988862)]) 
response = HttpResponse(kml.kml()) 
response['Content-Disposition'] = 'attachment; filename="botanicalgarden.kml"' 
response['Content-Type'] = 'application/kml' 
return response