2012-03-24 3 views
0

업데이트 질문 :장고 : 장고 SQL 쿼리가 발생 생성 오류

장고 나에게 다음과 같은 SQL 쿼리주고있다

: 나는 PostgreSQL의 명령 줄에서 SQL 쿼리를 실행하면

SELECT "auth_user"."id", "auth_user"."username", "auth_user"."first_name", "auth_user"."last_name", "auth_user"."email", "auth_user"."password", "auth_user"."is_staff", "auth_user"."is_active", "auth_user"."is_superuser", "auth_user"."last_login", "auth_user"."date_joined" FROM "auth_user" WHERE "auth_user"."username" = %s args=('andrew',); 

, 나는 수를 다음과 같은 오류 :

ERROR: syntax error at or near "%" 
LINE 1: ..." FROM "auth_user" WHERE "auth_user"."username" = %s args=(... 
                  ^

그러나 문을 약간 수정하면 postgresql에서 올바른 결과를 얻을 수 있습니다.

SELECT "auth_user"."id", "auth_user"."username", "auth_user"."first_name", "auth_user"."last_name", "auth_user"."email", "auth_user"."password", "auth_user"."is_staff", "auth_user"."is_active", "auth_user"."is_superuser", "auth_user"."last_login", "auth_user"."date_joined" FROM "auth_user" WHERE "auth_user"."username" = 'andrew'; 

생성 된 Django 쿼리가 올바르지 않습니까?


안녕 유래 사람들,

이 미친 날 드라이브

아주 간단한 코드 : 나는 그러나

user = get_object_or_404(User, pk = request.user.pk) 

와 user_auth에서 사용자 정보를 추출 할

, 내가 얻을 장고의 오류 메시지 :

'NoneType' object does not support item assignment 

psql 명령 줄에서 sql 쿼리를 확인하고 실행하면 psql이 내게 오류 메시지를 표시하므로 명령문이 올바르지 않을 수도 있습니다.

psql의 문은 다음과 같습니다

SELECT "auth_user"."id", "auth_user"."username", "auth_user"."first_name", "auth_user"."last_name", "auth_user"."email", "auth_user"."password", "auth_user"."is_staff", "auth_user"."is_active", "auth_user"."is_superuser", "auth_user"."last_login", "auth_user"."date_joined" FROM "auth_user" WHERE "auth_user"."id" = %s ; args=(7,) 

왜 %의은 WHERE 문에 말하는가? 사용자 ID는 문자열이 아닙니다.

저는 솔루션이 매우 단순해야한다고 생각합니다. 그러나 문제가 무엇인지 여기에서 파악할 수 있습니다. 도움과 의견을 보내 주셔서 감사합니다.

나는 사용자위한 인증에 대한 django_social_auth 패키지를 사용하고

추가 설명. 세 번째 부분이 자격 증명을 지우면 사용자는 대시 보드 사이트로 이동하게되므로 request.user가 None이 아닌 것으로 가정합니다. 없음

전체 역 추적

Environment: 


Request Method: GET 
Request URL: http://login.test.com:8000/profile/dashboard/ 

Django Version: 1.3.1 
Python Version: 2.7.1 
Installed Applications: 
['django.contrib.admin', 
'django.contrib.auth', 
'django.contrib.contenttypes', 
'django.contrib.sessions', 
'django.contrib.sites', 
'django.contrib.gis', 
'django.contrib.messages', 
'django.contrib.markup', 
'django.contrib.staticfiles', 
'django.contrib.flatpages', 
'django.contrib.humanize', 
'guardian', 
'easy_thumbnails', 
'userena', 
'userena.contrib.umessages', 
'south', 
'django_extensions', 
'debug_toolbar', 
'social_auth', 
'djangoratings', 
'about', 
'apps.profiles', 
'apps.map', 
'apps.contact', 
] 
Installed Middleware: 
['django.middleware.common.CommonMiddleware', 
'django.contrib.sessions.middleware.SessionMiddleware', 
'django.middleware.csrf.CsrfViewMiddleware', 
'django.contrib.auth.middleware.AuthenticationMiddleware', 
'django.contrib.messages.middleware.MessageMiddleware', 
'django.middleware.doc.XViewMiddleware', 
'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware', 
'debug_toolbar.middleware.DebugToolbarMiddleware'] 


Traceback: 
File "/Users/neurix/Development/test/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response 
    111.       response = callback(request, *callback_args, **callback_kwargs) 
File "/Users/neurix/Development/test/test/apps/profiles/views.py" in dashboard 
    35.  extra_context['username'] = user.username 

Exception Type: TypeError at /profile/dashboard/ 
Exception Value: 'NoneType' object does not support item assignment 

views.py

... 
31: print "user: %s" %(request.user.pk) 
32: user = get_object_or_404(User, pk = request.user.pk) 
33: 
34: 
35: extra_context['username'] = user.username 
36: if user.first_name: 
37:  extra_context['name'] = user.first_name 
... 

+1

'% s'은 (는) 일반적인 자리 표시 자이며 문자열을 나타내지 않습니다. 추적을 게시 해보십시오. –

+0

전체 추적을 표시 할 수 있습니까? – diegueus9

+0

추적 다시 추가되었습니다.도와 줘서 고마워! – neurix

답변

1

가 그 request.user 될 수 없다?

if request.user is not None: 
    user = get_object_or_404(User, pk = request.user.pk)