Почему в коде ниже, это глобальный direktorie
возвращает правильные данные в шаблоне login()
отладки, но когда я пытаюсь получить доступ к одной переменной из autoname()
он говорит список имеет длину 0
? Я не ссылаюсь на direktorie
в любых других местах в views.py
- или где-нибудь еще в этом отношении. (Весь приведенный ниже код - это просто попытка обнаружить, что я делаю неправильно. Меня не волнует длина возвращаемого списка. Я просто хочу знать, что это видно и имеет примерно правильное количество записей.)Джанго: результаты поиска LDAP исчезают
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
##############################################################################
Я понятия не имею, что из 'eldappery import *' делает. FWIW, ["Хотя это верно для использования с модуля модульного импорта * на уровне модуля, это обычно плохая идея"] (http://docs.python.org/2/howto/doanddont.html#at-module- уровень) –