2011-08-16 76 views
1

我正在處理一個django項目,當我嘗試運行此函數時,它返回只能有一個參數,但存在只有一個論點。我的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) 

網址模式

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

這裏是url模式 – Ulmer

回答

10

我懷疑你的URL模式捕獲了一些其他變量。如果您將URL模式附加到視圖,並且該URL模式捕獲任何值,則需要設置該視圖,以便在之前的每個捕獲值上獲取參數,該請求參數永遠是第一個參數。所以,讓我們說你有一個模式

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

myview()需要定義,像這樣:

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

+1的心理調試:你發佈了這個27分鐘之前Ulmer發佈了他的URL模式。你正確地確定了這個問題。 – user9876

+0

不錯,解決了這個問題。謝謝 – Ulmer

1

的要求始終是一個觀點的第一個參數,對你可能已經通過其他參數上面。如果你調用視圖傳遞它1參數:

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

你可能會通過URL傳遞額外的參數。

相關問題