2011-11-29 77 views
3

我使用以下方法来确定该索引页相匹配的模式,在我决定要加载基于哪一个模板,如果它是一个AJAX请求模板:views for Django flatpages?

def home(request): 

    if request.is_ajax(): 
     template = "ajax.html" 
    else: 
     template = "index.html" 

    entries = posts.objects.all()[:10] 
    return render_to_response(template, {'posts' : entries}, context_instance=RequestContext(request)) 

不过,我没有什么关于在我的views.py中提到的flatpages,我怎么能做一个类似的request.is_ajax()检查flatpage的模板?

谢谢!

回答

5

Got it!

urls.py

url(r'^(?P<url>.*)$', 'Alpha.blog.views.flatpage', {}, 'flatpage'), 

views.py:

def flatpage(request, url): 
    try: 
     if url == '': 
      url = 'home/' 
     flatpage = FlatPage.objects.get(url="/%s" % url) 
    except: 
     pass 

    if request.is_ajax(): 
     template = 'pages/ajax.html' 
    else: 
     template = 'pages/default.html' 

    context_instance=RequestContext(request) 
    context_instance.autoescape=False 
    return render_to_response(template, {'flatpage': flatpage}, context_instance) 
+0

你可能想要删除FlatpageFallbackMiddleware为好,如果你正在处理这个自己。你也想确保你的URL模式是你的urls.py中最后一个,并且知道如果你曾经在另一个视图中提供基于404s的平面页面,那么这将不再工作。 –

+0

正式注意,谢谢:) – FLX

+0

接受你自己的答案! :) – jathanism