Skip to main content
 首页 » 编程设计

python之我的 Django View 说它只接受一个参数并给出两个但只有一个

2025年05月04日35jiqing9006

我正在做一个 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) 

请您参考如下方法:

我怀疑您的 URL 模式捕获了其他一些变量。如果您将 URL 模式附加到 View 并且该 URL 模式捕获任何值,则需要将该 View 设置为在请求参数之上为每个捕获的值获取一个参数,该参数始终是第一的。所以,假设你有一个模式

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

myview() 需要这样定义:

def myview(request, digit): 
    # do something