2011-11-29 75 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