1

私はこのようなモデルを持っています:

class UserSubmission(models.Model):
    mantra = models.CharField(max_length=64)
    ip = models.CharField(max_length=15) # xxx.xxx.xxx.xxx

次のような関数を作成したい:

def create_submission(request, mantra):
    s = UserSubmission(mantra=mantra)
    ip_meta_entry = 'HTTP_X_REAL_IP' in request.META and 'HTTP_X_REAL_IP' or 'REMOTE_ADDR'
    s.ip = request.META[ip_meta_entry]
    s.save()
    return s

注:上記は純粋にデモンストレーションを目的としたものであり、正確には私がやっていることではありませんが、脱線します...

そのような関数を配置するのに理想的な場所はどこでしょうか? モデルのクラスメソッド? マネージャーで?ベストプラクティスは何でしょう。

4

1 に答える 1

2

私はrequestviews.pyで使用する関数を配置する傾向があります。エラー チェックを除けば、コードは正常に動作するはずです。

def create_submission(request, mantra):
    ip_meta_entry = 'HTTP_X_REAL_IP' in request.META and 'HTTP_X_REAL_IP' or 'REMOTE_ADDR'
    s = UserSubmission(
        mantra=mantra,
        ip=request.META[ip_meta_entry])
    s.save()
    return s
于 2011-03-02T04:06:42.987 に答える