Django中的身份验证
我正在尝试在我的Django网站上连接表单。
如果我在命令行中这样做:
$ ./manage.py shell
Python 2.6.4 (r264:75706, Oct 27 2009, 06:25:13)
[GCC 4.4.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from django.contrib import auth
>>> user = auth.authenticate(username='user', password='password')
>>>
没有问题,你可以看到。
但是如果在我的视图中,我有:
# views.py
...
from django.contrib import auth
...
def check_pass(request):
...
user = auth.authenticate(username='user', password='password')
...
我遇到了500错误页面,错误信息如下:
Environment:
Request Method: POST
Request URL: http://localhost/check_pass/
Django Version: 1.1.1
Python Version: 2.6.4
Installed Applications:
['django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites']
Installed Middleware:
('django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware')
Traceback:
File "/usr/lib/python2.6/site-packages/django/core/handlers/base.py" in get_response
92. response = callback(request, *callback_args, **callback_kwargs)
File "/home/mart/programmation/python/django/martfiles/views.py" in check_pass
67. user = auth.authenticate(username='user', password='password')
File "/usr/lib/python2.6/site-packages/django/contrib/auth/__init__.py" in authenticate
37. user = backend.authenticate(**credentials)
File "/usr/lib/python2.6/site-packages/django/contrib/auth/backends.py" in authenticate
18. user = User.objects.get(username=username)
File "/usr/lib/python2.6/site-packages/django/db/models/manager.py" in get
120. return self.get_query_set().get(*args, **kwargs)
File "/usr/lib/python2.6/site-packages/django/db/models/query.py" in get
300. num = len(clone)
File "/usr/lib/python2.6/site-packages/django/db/models/query.py" in __len__
81. self._result_cache = list(self.iterator())
File "/usr/lib/python2.6/site-packages/django/db/models/query.py" in iterator
238. for row in self.query.results_iter():
File "/usr/lib/python2.6/site-packages/django/db/models/sql/query.py" in results_iter
287. for rows in self.execute_sql(MULTI):
File "/usr/lib/python2.6/site-packages/django/db/models/sql/query.py" in execute_sql
2369. cursor.execute(sql, params)
File "/usr/lib/python2.6/site-packages/django/db/backends/util.py" in execute
19. return self.cursor.execute(sql, params)
File "/usr/lib/python2.6/site-packages/django/db/backends/sqlite3/base.py" in execute
193. return Database.Cursor.execute(self, query, params)
Exception Type: OperationalError at /check_pass/
Exception Value: no such table: auth_user
我的settings.py文件
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
)
...
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
)
我运行了'syncdb',没有任何更改,我确定问题出在这一行,因为我通过
assert False
user = auth...
AssertionError
user = auth...
assert False
没有这个表auth_user
2 个回答
1
在你的脚本的开头:
from django.contrib.auth import authenticate, login, logout
身份验证:
user = authenticate(username=request.POST['username'], password=request.POST['password'])
if user is not None:
if user.is_active:
login(request, user)
#user is loged in
else:
# user is not active
else:
# false authentification
0
跟处理静态文件一样,我需要把我的数据库放在家目录之外,而不是和我的Python文件放在一起。