Мой взгляд на Django говорит, что он принимает только один аргумент и два приводится, но есть только один - PullRequest
1 голос
/ 16 августа 2011

Я работаю над проектом 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),

)

Traceback:

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)

Ответы [ 3 ]

10 голосов
/ 16 августа 2011

Я подозреваю, что ваш шаблон URL содержит какую-то другую переменную.Если вы присоединяете шаблон URL к представлению, и этот шаблон URL захватывает какие-либо значения, вам необходимо настроить это представление так, чтобы оно принимало аргумент для каждого захваченного значения поверх аргумента запроса, который всегда является первым,Итак, допустим, у вас есть шаблон

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

myview(), который нужно определить примерно так:

def myview(request, digit):
    # do something
1 голос
/ 16 августа 2011

запрос всегда является первым аргументом представления, поверх других аргументов, которые вы, возможно, передали. Если вы вызываете представление, передавая ему 1 аргумент:

def main_page(request, arg1):
  code ...
0 голосов
/ 16 августа 2011

Вы, вероятно, передаете дополнительный аргумент через URL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...