在Django中根据其ID加载页面

时间:2012-07-16 14:27:11

标签: python django django-templates django-views

我一直在使用Django来制作我的作品集,并且我已经设法制作了一个简单的页面管理器。问题是,它不起作用我希望它如何工作:

  1. 我创建了这个页面。
  2. 它加载我给它的内容。
  3. 使用jQuery,我只加载该内容(格式化HTML)。
  4. 它显示自己没有重新加载或移动到另一个页面。
  5. 问题在于最后两个步骤,我无法让视图和模板只加载一个。

    Views.py:

    def paginas(request, title):
        get_page = Page.objects.all() # I can't think of a way to make a proper filter
        return render_to_response('template.html', {'get_page': get_page}, context_instance=RequestContext(request), mimetype="text/html")
    

    Template.html:

    {% if get_page %}
        {% for page in get_page %}
                {{ page.content|safe }}
                <p>Full path is {{ request.get_full_path }} and page id is {{ page.id }}</p>
        {% endfor %}
    {% else %}
        <p>Nothing.</p>
    {% endif %}
    

    我知道我应该过滤它,但我不知道如何。

    感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

tbh,django tutorial非常清楚地解释了网址,参数和表单,但这里的想法是:

url(r'^/someapp/(?P<page_id>\d+)/$', paginas),


def paginas(request, **kwargs):
    id = kwargs.pop('page_id')
    page = get_object_or_404(Page, id=id)
    # etcetera


class Page(models.Model):
    # regular stuff
    def get_absolute_url(self):
        return "/someapp/%d/" % self.id

答案 1 :(得分:1)

paginas中你显然得到了所有页面。

要获得一个页面,您可以使用get功能

def paginas(request, title):
   try:
     your_page = Page.objects.get(title=title)
   except Page.DoesNotExist:
     # error no page for that title
     # could use built in get_object_or_404 as ArgsKwargs suggested

考虑使用slug来确保编码是正确的也很重要。页面ID甚至可以更好地使用