2011-08-16 5 views
1

저는 장고 프로젝트를 진행 중입니다.이 함수를 실행하려고하면 하나의 인수 만있을 수 있지만 반환 할 수 있습니다. 오직 하나의 인자 만 주어진다.내 Django 뷰는 단 하나의 인수 만 필요하고 두 개는 주어 지지만 단 하나만 있다고 말합니다.

from django.http import HttpResponse, Http404 
from django.template import Context 
from django.template.loader import get_template 
from django.contrib.auth.models import User 

def main_page(request): 
    template = get_template('main_page.html') 
    variables = Context({ 
      'head_title':u'Bookmarks!', 
      'page_title':u'Welcome to bookmarks!', 
      'page_body': u'store and share the bookmarks', 
      }) 
    output = template.render(variables) 
    return HttpResponse(output) 

URL 패턴

from django.conf.urls.defaults import patterns, include, url 
from socialnetwork.bookmarks.views import * 
urlpatterns = patterns('', 
    (r'^user/(\w+)/$', main_page), 

) 

역 추적 :

Environment: 


Request Method: GET 
Request URL: http://127.0.0.1:8000/user/Colin/ 

Django Version: 1.3 
Python Version: 2.7.1 
Installed Applications: 
['django.contrib.auth', 
'django.contrib.contenttypes', 
'django.contrib.sessions', 
'django.contrib.sites', 
'django.contrib.messages', 
'django.contrib.staticfiles', 
'socialnetwork.bookmarks'] 
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') 


Traceback: 
File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py" in get_response 
    111.        response = callback(request, *callback_args,  **callback_kwargs) 

Exception Type: TypeError at /user/Colin/ 
Exception Value: main_page() takes exactly 1 argument (2 given) 
+1

뷰의 URL 패턴이 무엇입니까? 그것이 여분의 인수가 전달 될 곳입니다. –

+0

추적 표시가 있습니까? –

+0

여기에 심령 디버깅을위한 – Ulmer

답변

10

귀하의 URL 패턴이 다른 변수를 캡처 한 것으로 의심됩니다. 보기에 URL 패턴을 첨부하고 그 URL 패턴이 모든 값을 캡처하는 경우, 캡처 된 각 값인 에 대한 인수를 취하여 위의 요청 인수가 항상 첫 번째가되도록 설정해야합니다. 자, 당신이 패턴

(r'^mainpage(\d+)/$', myview) 

myview() 요구를 가지고 가정 해 봅시다과 같이 정의한다 :

def myview(request, digit): 
    # do something 
+1

+1의 URL 패턴이 있습니다. Ulmer가 URL 패턴을 게시하기 전에 27 분 전에 게시했습니다. 그리고 그 문제를 정확하게 파악했습니다. – user9876

+0

니스, 문제가 해결되었습니다. 감사 – Ulmer

1

요청이 항상 당신이 통과 할 수있는 다른 인자의 상단에보기의 첫 번째 인수입니다. 보기를 전달하면 1 인수 :

def main_page(request, arg1): 
    code ... 
0

아마도 url을 통해 추가 인수를 전달할 것입니다.

관련 문제