Django课堂问题
问题描述:
请问我的英文不是最好的。Django课堂问题
我对django和python很陌生,我尝试编程用户认证。 我用Django文档,一切工作正常用下面这些代码:
def anges(request):
username = []
password = []
if request.method == "POST":
username = request.POST['username']
password = request.POST['password']
user = authenticate(username=username, password=password)
render_to_response ('registration/login.html', {'username': username, 'password': password})
if user is not None:
if user.is_active:
login(request, user)
angestellte_list = Employee.objects.all().order_by('lastname')
return render_to_response(("emp/angestellte.html"), {'angestellte_list': angestellte_list})
else:
return HttpResponse('disabled account')
else:
return HttpResponse('invalid login')
else:
return render_to_response ('registration/login.html', {'username':username, 'password':password})
但是,这仅仅是一个功能,我想使用面向我在我的views.py等功能此对象,因为干的。 这只是第一个测试,但它不工作,因为调试器说:“全球名‘请求’没有定义” 这是我的代码:
class einloggen:
def __init__(self):
self.Username = request.POST['username']
def angestellte(self):
return HttpResponse("hello")
我如何使用请求变量的类或还有什么需要考虑的吗?
答
很明显,你不能在einloggen
类中使用request
变量__init__
,因为,坦率地说,你不会将请求变量发送给构造函数。
我看不到你在视图作出einloggen
对象无论在任何地方,但你应该喜欢的东西:
class einloggen:
def __init__(self, request):
self.Username = request.POST.get('username')
,然后在您的视图(你已经得到了请求变量) :
def anges(request):
myobj = einloggen(request)
然而,Django的已经有一个认证系统。使用它你会好得多。你可以使用美丽的装饰,使它真的很容易,很好«保护»意见。
Django已经有一个完整的用户认证应用程序。为什么写自己的? – 2011-05-25 12:05:54
...或者换句话说,你需要什么'django.contrib.auth'缺乏? – 2011-05-25 12:16:02