-2

構築しようとしている個人の Web サイトにアクセスしようとすると、次のエラー メッセージが表示され続けます。

TypeError: render_page() takes exactly 2 arguments (1 given) 

render_page() を直接呼び出す代わりに render_to_response() を使用しているため、方法がわからないので、この種のことは処理されると思いますか?

ビュー.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

1 に答える 1

4

「render_page() を直接呼び出す代わりに、render_to_response() を使用している」という意味がわかりません。urlconf から呼び出しrender_pageていますが、正規表現でグループを使用していないため、URL を渡していません。

次のようにパラメーターをキャプチャする必要があります。

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

(ただし、これはかなり奇妙なことです。URLconf の要点は、特定の URL と照合し、特定のビュー関数にディスパッチすることです。これにより、urlconf で照合epresenceし、epresence 関数を直接呼び出すことができます。また、 dict をすべてのテンプレートに渡すには、コンテキスト プロセッサを調べる必要があります。)navs

于 2012-08-08T21:04:09.047 に答える