2011-08-16 12 views
1

私はdjangoプロジェクトで作業していますが、この関数を実行しようとすると引数は1つしかありません。引数は1つだけです。私のDjangoビューには引数が1つしかなく、2つしか指定されていませんが、1つしかありません。

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

ここでは、精神的なデバッグのためのURLパターン – Ulmer

答えて

10

あなたのURLパターンが他の変数を取り込んでいると思われます。ビューにURLパターンを添付し、そのURLパターンに値がキャプチャされている場合は、キャプチャされた値の上に引数を取るようにそのビューを設定して、の上にリクエスト引数を指定する必要があります。それでは、あなたはパターン

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

myview()ニーズを持っているとしましょうそうのように定義する:

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

+1です:UlmerがURLパターンを投稿する前に27分前に投稿しました。あなたは問題を正しく特定しました。 – user9876

+0

ニース、問題を解決しました。ありがとう – Ulmer

1

要求はあなたが合格したかもしれない他の引数の上に、常にビューの最初の引数です。 1つの引数を渡してビューを呼び出す場合:

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

おそらくurlで追加の引数を渡します。

関連する問題