我一直在使用Django来制作我的作品集,并且我已经设法制作了一个简单的页面管理器。问题是,它不起作用我希望它如何工作:
问题在于最后两个步骤,我无法让视图和模板只加载一个。
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 %}
我知道我应该过滤它,但我不知道如何。
感谢您的帮助。
答案 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甚至可以更好地使用