2017-05-01 8 views
0

私はちょうどDjangoを学んでいるので、私の質問は注目に値しないように思えるかもしれませんが、私はグーグルで時間を過ごして答えを見つけました。Djangoデータベースを表示する方法buttonclick

私はそれ

urls.py

url(r'^upd/$', update_database, name="upd") 

views.py

def update_database(request): 
    grabdata() 



def grabdata(): 
    url = "https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/4.5_day.geojson" 
    weburl = urllib.request.urlopen(url) 

    if (weburl.getcode() == 200): 
     data = json.loads(weburl.read()) 
     EarthQuakes.objects.all().delete() 
     LastGetSession.objects.all().delete() 

     lastsession = LastGetSession(hand=data["metadata"]["title"]) 
     lastsession.save() 

     for i in data["features"]: 
      place = i["properties"]["place"] 
      place = str.split(",") 
      place = place[-1] 

      time = i["properties"]["time"] 
      mag = i["properties"]["mag"] 
      rept = i["properties"]["felt"] 
      if rept is None: 
       rept = 1 
      longitude = 0 
      latitude = 0 
      earthquake = EarthQuakes(place=place, time=time, 
            mag=mag, rept=rept, 
            longitude=longitude, latitude=latitude) 
      earthquake.save() 

テンプレート

<a id="update_button" class="btn btn-info btn-lg" href="{% url 'upd' %}" >Update_database</a> 

を埋めるための2つのモデルと機能を持っているが、私は」didnのavからそれを実行する方法を得る見る。 またはモデル関数などを呼び出すconroller関数を呼び出す方法があると仮定します。

ビュー "earthquake.views.update_databaseはHttpResponseオブジェクトを返しませんでした。代わりにNoneを返しました。 "

1つの欠けているピースまたはurls.pyであなたのviews.py

def my_view(request): 
    grabdata() 
    return HttpResponse('Done') 

でpazzle

+0

あなたはそれをfrと呼ぶことができますビュー。あなたの現在のビューコードは何ですか? BTWでは、より速いバッチ挿入のために 'bulk_create()'を使うことができます。 – kichik

答えて

2

があなたのテンプレート

に新しいURL

url(r'^my-view/$', views.my_view,name='my_view') 

を追加しているような気が

<a href="{% url 'my_view' %}">Update</a> 
+0

サーバーの起動時にgrabdata()が実行され、「earthquake.views.update_databaseビューがHttpResponseオブジェクトを返さなかった」という応答が返され、代わりにNoneが返されました。 on buttonclick event /しかし、残りの作業 –

+0

関数は値を返す必要があります。それはプログラミングの一般的なルールです。ビュー内で 'HttpResponse( 'Done')'を返し、関数内の何かを 'return'します。 –

+0

はい。 Sobir、あなたの答えに「返信HttpResponse( 'Done')」を追加する可能性があります –

関連する問題