0

これは、実行時に500エラーを生成している私のサーバーコードです。

#views.py

json をインポート

def registered_users_number(request):
    if not request.is_ajax():
       raise Http404

     usercount_today =  User.objects.raw("SELECT * FROM core_user WHERE DATE(reg_date) =   DATE(NOW())")
     print usercount_today
     response_data['result'] = usercount_today
     response_data['message']='You messed up'
     return HttpResponse(json.dumps(response_data), content_type="application/json")  

Django と Python の経験が浅いため、構文の問題がいくつかあると思います。

また、print usercount_today は以下を提供しています:- RawQuerySet: 'SELECT * FROM core_user WHERE DATE(reg_date) = DATE(NOW())'.

みんな、ありがとう

4

3 に答える 3

1

コードに 3 つの問題があると思います。

  1. の宣言でエラーが発生しresponse_dataました。行の前にresponse_data['result'] = usercount_today定義する必要がありますresponse_data = {}

  2. なぜあなたはする必要がありprint usercount_todayますか?これはサーバー コードであり、Python はこの行を HttpResponse に出力しません。

  3. ユーザーオブジェクトの取得に生のSQLクエリが本当に必要ですか? この行でdjango ORMを使用しないのはなぜですか? これはコード スタイルだけでなく、Django にも関係します。1.4 以降特定の方法で時刻オブジェクトを db に保存するため、代わりに日付対応の日時オブジェクトを使用する必要がありますDATE(NOW())

于 2013-01-31T08:58:30.617 に答える
1

あなたのコードをもう少し見なければ、完全に判断することはできませんが、Django ORM のパワーをより簡単に利用できる場合に、生の SQL を使用しているように見えます。

私には、次の行に沿ってもっときれいにできるように見えます:

import datetime

def registered_users_number(request):
    usercount_today = User.objects.filter(reg_date__gte=datetime.date.today()).count()
    response_data = simplejson.dumps({"count": usercount_today})
    return HttpResponse(response_data, content_type="application/json")

主な問題は、ユーザー モデルが表示されず、reg_date が既に日時フィールドであるかどうかを判断するのが難しいことです。そうでない場合は、models.DateTimeField(auto_now_add=True)reg_date フィールドに次のようなものを使用することをお勧めします。そうすれば、上記のような ORM を簡単に使用できます。

于 2013-02-04T05:10:49.993 に答える
0

みんな、ありがとう。

わかった。それは、Django に対する不慣れにほかなりませんでした。

これが私が行った変更です。

ビュー.py

def registered_users_number(request):   
    from django.db import connection
    cursor = connection.cursor()
    if not request.is_ajax():
         raise Http404

    cursor.execute("SELECT COUNT(*) FROM core_user WHERE DATE(reg_date) = DATE(NOW())")
    usercount_today = cursor.fetchone()  
    print(usercount_today)
    response_data = simplejson.dumps({"count": usercount_today})
    return HttpResponse(response_data, content_type="application/json") 
于 2013-01-31T10:33:16.707 に答える