以下のコードで、グローバルdirektorie
がデバッグ テンプレートで正しいデータを返すlogin()
のに、そこから同じ変数にアクセスしようとするautoname()
と、リストの長さが であると表示されるのは0
なぜですか? 私は他の場所では言及していません-- またはdirektorie
他の場所でも。views.py
(以下のコードはすべて、私が間違っていることを発見するための試みにすぎません。返されるリストの長さはあまり気にしません。ただ、リストが表示されており、おおよそ適切な数のエントリがあることを知りたいだけです。 )
from django.http import HttpResponse, HttpResponseRedirect, Http404
from django.shortcuts import render_to_response, get_object_or_404
import json # JSON for jQuery AJAX autocomplete
from eldappery import * # LDAP for jQuery AJAX autocomplete
direktorie = []
##############################################################################
def login(request):
"""LDAP Login routine"""
global direktorie
if request.method == "POST": # If submitted...
if request.POST["username"] and request.POST["password"]:
username = request.POST["username"]
password = request.POST["password"]
LDAPfeed = dapperize(username, password) # ...login
if LDAPfeed:
direktorie = fetch_names(LDAPfeed,"") # ...get everybody
ls = locals() # DEBUG!
gs = globals() # DEBUG!
return render_to_response("debug.html",
{"ls": ls,
"gs": gs}) # DEBUG! Works! (direktorie full)
else:
return HttpResponseRedirect("/login/")
return render_to_response("login.html",
context_instance=RequestContext(request))
##############################################################################
def autoname(request):
"""Auto-complete names"""
global direktorie
if request.is_ajax():
# results = [{"id": 5,
# "label": 5,
# "value": 5}] # DEBUG! Works! (5 in template)
results = [{"id": len(direktorie),
"label": len(direktorie),
"value": len(direktorie)}] # DEBUG! Doesn't work! (0 in template)
data = json.dumps(results) # Convert to JSON string
else: # No results returned!
data = "fail" # Error...
mimetype = "application/json" # MIME type = JSON
return HttpResponse(data, mimetype) # Send JSON back to web page
##############################################################################