我是一个不成熟的django开发者。我有一个名为“Post”和“Catagory”的两个类的模型。我想在我的模板中阅读分类项目。如何在模板中导入我的类别并在我的页面中显示它的数据?
models.py
from django.db import models
from taggit.managers import TaggableManager
class Category(models.Model):
title = models.CharField(max_length=40)
def __unicode__(self):
return self.title
class Post (models.Model):
title = models.CharField(max_length=150)
body = models.TextField()
date = models.DateTimeField()
tags = TaggableManager ()
cats = models.ManyToManyField(Category)
def __unicode__ (self):
return self.title
谢谢。
答案 0 :(得分:0)
它就像获取类别值并分配到设置中并传入视图html将起作用
def viewfuncion(request):
template_vars = {}
settings = Category.objects.get(pk=1)
template_vars['title_show'] = settings.title
t = loader.get_template('view.html')
c = Context(template_vars)
return HttpResponse(t.render(c), content_type = "application/xhtml")
因此,在您的HTML {title_show}中将打印内容
答案 1 :(得分:0)
如果您使用的是基于类的视图,并希望列出您可以执行的所有类别:
# urls.py
url(regex=r'^category/$',
view=CategoriesListView.as_view(),
name='category_list_all'),
# views.py
class CategoriesListView(ListView):
model = Category
# category_list.html
<h2>Category list</h2>
<ul>
{% for cat in category_list %}
<li>
{{ cat.category }}
</li>
{% endfor %}
</ul>
您可以将html文件放在<project_route>/<app_name>/templates/<app_name>/
或<project_route>/templates/<app_name>/
如果你有一个现有的基于功能的视图使用Post模型,那么你可以这样做:
# views.py
...
post = get_object_or_404(Post, pk=pass_in_pk)
return render(request, 'post.html', {'post': post})
# post.html
<h2>Category list</h2>
<ul>
{% for category in post.cats %}
<li>{{ category.title }}</li>
{% endfor %}
</ul>
如果您使用DetailView基于Post模型的基于类的视图,那么您也可以使用上面的html,只需将它放在post_detail.html
的相应文件夹中。