0

ユーザーがダウンロードできるように、その場で KML ファイルを作成しようとしています。KML を作成して保存するために Python で KML ライブラリを使用していますが、ファイルを ad ownload として返したいと考えています。基本的に、アプリ内のユーザーがリンクをクリックすると、KML が生成され、ユーザーがリンクをクリックしてダウンロードされます。私が持っているコードは機能しておらず、応答が正しく設定されていないと推測しています:

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

filename= と、保存される final が同じではないためだと思います。

4

1 に答える 1

1

モジュールには、ファイルとして保存する代わりに kml を文字列として取得する関数があるためsimplekml、最初に 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
于 2016-12-14T16:50:17.430 に答える