2012-08-08 3 views
-2

я получаю следующее сообщение об ошибке при попытке получить доступ к личной веб-сайт, который я пытаюсь построить:TypeError: 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() напрямую» означает. Вы звоните render_page с вашего привязок - однако, вы не передаете его какой-либо из URL, потому что вы не используете группу в регулярном выражении.

Вы должны захватить параметр, как это:

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

(Заметим, однако, это довольно странно, что хочу сделать Все дело в привязок, чтобы соответствовать против конкретных адресов и отправки к конкретным. функции просмотра: так, чтобы вы соответствовали epresence в urlconf и получили его, чтобы вызвать функцию epresence напрямую. Кроме того, вы должны изучить context processors, чтобы передать ваш navs dict каждому шаблону.)

+0

Oh derp. Благодарю. – swizzard

+1

Я также хотел бы добавить, что диспетчер URL-адресов ЭКСТРЕМАЛЬНО быстро из-за его компиляции регулярного выражения. Выполнение этого способа @swizzard - это, безусловно, удар по производительности. –

Смежные вопросы