django viewの中でrequest、reponseのよく使う操作

5889 ワード

問題の形式でいくつかの要求と応答のよくある書き方を記録して、django 1.8を例にして、持続的に蓄積して更新しています。
ここの住所http://blog.csdn.net/orangleliu/article/details/75226747
request
  • post要求におけるjsonデータ
  • を取得する。
    def hello(request):
        data = json.loads(request.body)
        ...
    jsonフォーマットには、他にもいくつかの のフォーマットがあります。いずれもレクエスト.bodyから要求体のデータを取得できます。ajax要求についてはrequest.is_ajax()を使用して判断してもいいです。
  • 要求された情報に基づいてBase urlを取得する(サービスのドメイン名が多い場合もありますが、動的にurl情報を接続する必要があります)
  • # url http://wificdn.com:8888/wxpay/qrcode2/16122010404238801544?name=lzz
    request.get_host() # wificdn.com:8888
    request.get_full_path() # u'/wxpay/qrcode2/16122010404238801544?name=lzz'
    
    request.build_absolute_uri('/') # 'http://wificdn.com:8888/'
    request.build_absolute_uri('/hello') # 'http://wificdn.com:8888/hello'
    request.build_absolute_uri() # 'http://wificdn.com:8888/wxpay/qrcode2/16122010404238801544?name=lzz'
    
    request.path # u'/wxpay/qrcode2/16122010404238801544'
    request.scheme # 'http'
  • は、フォーム内で選択されたcheckbox情報、例えばcheckboxのnameはchecks
  • である。
    var_list = request.POST.getlist('checks')
    戻るのはリストオブジェクトで、ない場合は、[]に戻る。フォームにこのkeyがない場合は、[]に戻る。
    レスポンス
  • jsonフォーマットの応答1.8バージョンはすでにJsonResponseを提供しています。from django.http import JsonResponseは使えます。低いバージョンのdjangoはソースを参照して自分で書いてもいいです。
  • レスポンスにcookiesとheader
  • を設定します。
    def xxxxview(request):
        ....
    
        resp = HttpResponseRedirect('/account/portal/?token=%s' % es)
        resp.set_cookie("coofilter", es, max_age=300)
        resp['Erya-Net-Type'] = NET_TYPE
        resp['Erya-Auth-Host'] = AUTH_HOST
        resp['Erya-Auth-Port'] = AUTH_PORT
        resp['Erya-Auth-Uip'] = ip
        resp['Erya-Auth-Token'] = es
        return resp
    セッション
    how to use sessionは、主にgetとsetと削除です。
    def post_comment(request, new_comment):
        if request.session.get('has_commented', False):
            return HttpResponse("You've already commented.")
        c = comments.Comment(comment=new_comment)
        c.save()
        request.session['has_commented'] = True
        return HttpResponse('Thanks for your comment!')
    
    def logout(request):
        try:
            del request.session['member_id']
        except KeyError:
            pass
        return HttpResponse("You're logged out.")
    cookies
    def login(request):
            response = HttpResponseRedirect('/url/to_your_home_page')
            response.set_cookie('cookie_name1', 'cookie_name1_value')
            response.set_cookie('cookie_name2', 'cookie_name2_value')
            return response
    
    def logout(request):
        response = HttpResponseRedirect('/url/to_your_login')
        response.delete_cookie('cookie_name1')
        response.delete_cookie('cookie_name2')
        return response
    
    #   
    coo = request.COOKIES.get('coofilter')
    # cookies     
    hr.set_cookie('user_id', user_id, max_age=300)