django ベースのバックエンドを呼び出す小さなスタンドアロンの python スクリプトを作成しましたが、ログインや認証を必要とするビューの呼び出しなどですべてが正常に機能しています。
ちょっとしたコード
def dostuff():
session = login(username, password)
license = add_license(session)
def _helper(self, url, cookie=None):
http = httplib2.Http()
if cookie:
headers = { "Cookie" : cookie }
else:
headers = {}
response, content = http.request(host + url, "GET", headers=headers, body="")
return response, content
def login(self, username, password):
url = "/license/login?username=%s&password=%s" % (username, password)
response, content = self._helper(url)
sessioncookie = response["set-cookie"]
customer_id = re.search("id=(?P<id>\d+)", content)
if response["status"] == "200":
return sessioncookie, customer_id.group("id")
def add_license(self, session):
cookie = session[0]
customer_id = int(session[1])-1
url = "/license/add_license?customer_id=%s" % customer_id
response, content = self._helper(url, cookie)
content = content[1:-1]
if response["status"] == "200": #ok
data = json.loads(content)
return data["fields"]
「GET」を「POST」に変更すると、Django CSRF エラー ページ (CSRF 検証に失敗しました) が表示されます。POST データを Django に送信するにはどうすればよいですか?
Django の私のログイン ビューで、csrf トークンを追加するために何か特別なことをする必要がありますか? 私の計画は、これを書き直して、問題が解決したら json を送信することです。
def my_login(request):
done, username = get_input(request, "username")
if not done:
return username
done, password = get_input(request, "password")
if not done:
return password
user = authenticate(username=username, password=password)
if user is not None:
if user.is_active:
login(request, user)
return HttpResponse("Done, id=%s" % user.pk)
else:
return HttpResponse("User disabled")
else:
return HttpResponse("Invalid login")