2012-08-08 75 views
-2

我不断收到试图访问个人网站,我试图建立在以下错误消息:类型错误: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), 
) 

有什么建议?

回答

4

我不知道“我正在使用render_to_response()而不是直接调用render_page()”的意思。您正在从您的urlconf调用render_page - 但是,您没有传递任何URL,因为您没有在正则表达式中使用组。

你应该拍摄这样的参数:

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

(但是请注意,这是想做一个相当奇怪的URL配置的整点是要匹配的特定网址和发送到特定的。查看功能:让你在urlconf中匹配epresence,并直接调用epresence函数。另外,你应该查看context processorsnavs字典传递给每个模板。)

+0

Oh derp。谢谢。 – swizzard 2012-08-08 21:41:34

+1

我也想补充一点,URL调度器编译正则表达式的速度非常快。这样做@swizzard的方式绝对是对性能的一种打击。 – 2012-08-09 02:07:40

相关问题