类型错误:render_page()到底需要2个参数(1给出)
问题描述:
我不断收到试图访问个人网站,我试图建立在以下错误消息:类型错误:render_page()到底需要2个参数(1给出)
TypeError: render_page() takes exactly 2 arguments (1 given)
我甚至不知道如何,因为我使用render_to_response()而不是直接调用render_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())
urls.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_to_response()而不是直接调用render_page()”的意思。您正在从您的urlconf调用render_page
- 但是,您没有传递任何URL,因为您没有在正则表达式中使用组。
你应该拍摄这样的参数:
url(r'^(?P<page>.*)$',render_page),
(但是请注意,这是想做一个相当奇怪的URL配置的整点是要匹配的特定网址和发送到特定的。查看功能:让你在urlconf中匹配epresence
,并直接调用epresence函数。另外,你应该查看context processors将navs
字典传递给每个模板。)
Oh derp。谢谢。 – swizzard 2012-08-08 21:41:34
我也想补充一点,URL调度器编译正则表达式的速度非常快。这样做@swizzard的方式绝对是对性能的一种打击。 – 2012-08-09 02:07:40