2012-08-08 72 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

相關問題