Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python TypeError:render_page()正好接受2个参数(给定1个)_Python_Django_Typeerror - Fatal编程技术网

Python TypeError:render_page()正好接受2个参数(给定1个)

Python TypeError:render_page()正好接受2个参数(给定1个),python,django,typeerror,Python,Django,Typeerror,当我试图访问我试图建立的个人网站时,我不断收到以下错误消息: TypeError: render_page() takes exactly 2 arguments (1 given) 我甚至不知道怎么做,因为我使用的是render\u to\u response()而不是直接调用render\u page(),所以我假设这种事情会得到解决 views.py: from django.http import HttpResponse,Http404 from django.template i

当我试图访问我试图建立的个人网站时,我不断收到以下错误消息:

TypeError: render_page() takes exactly 2 arguments (1 given) 
我甚至不知道怎么做,因为我使用的是render\u to\u response()而不是直接调用render\u page(),所以我假设这种事情会得到解决

views.py:

from django.http import HttpResponse,Http404
from django.template import Template,Context
from django.template.loader import get_template
from django.shortcuts import *

navs = {"About Me":"/aboutme/","Teaching":"/teaching/","CV":"/cv/","Online":"/epresence/",
"Links":"/links/","Main":"/main/"}
def render_page(request,page):
    if page == "epresence":
        return epresence(request)
    elif page == "links":
        return links(request)
    elif page == "teaching":
        return teaching(request)
    else:
        return other(request,page)
def epresence(request):
    pagetitle = "My Online Presence"
    sites = {...}
    navitems = globals().get("navs")
    return render_to_response("epresence.html",locals())
def links(request):
    pagetitle = "Links"
    navitems = globals().get("navs")
    friends = {...
}
    idols = {...
}
    resources = {...}
    return render_to_response("links.html",locals())
def teaching(request):
    pagetitle = "Teaching"
    navitems = globals().get("navs")
    teach = [...]
    learn = [...]
    return render_to_response("teaching.html",locals())
def other(request,page):
    pages = {"about":"About Me","me":"About Me","cv":"CV","home":"Home","main":"Home",}
    patetitle = pages.get(page)
    navitems = globals().get("navs")
    return render_to_response("main.html",locals())
URL.py:

from django.conf.urls import patterns, include, url
from personalsite.views import *
# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    url(r'^.*$',render_page),
)
有什么建议吗?

我不知道“我使用的是render\u to\u response()而不是直接调用render\u page()”是什么意思。您正在从urlconf调用
render\u页面
——但是,您没有向它传递任何URL,因为您没有在正则表达式中使用组

您应该像这样捕获参数:

url(r'^(?P<page>.*)$',render_page),
url(r'^(?P.*),呈现页面),

(请注意,这是一件非常奇怪的事情。URLconf的整个要点是匹配特定的URL并分派给特定的视图函数:这样您就可以在URLconf中匹配
epresence
,并让它直接调用epresence函数。此外,您还应该研究将
navs
dict传递给每个te

我还想补充一点,URL调度程序非常快,因为它可以编译正则表达式。用@swizzard的方式进行调度肯定会提高性能。