Hỏi đáp
Chia sẻ kiến thức, cùng nhau phát triển
Thắc mắc về inclusion_tag django
Tình hình là mình đang theo một khóa học trên udemy. Thì trong 1 project có 2 app (group với posts) họ có dùng
from django import template
register = template.Library()
và models của group và viết một đoạn vòng for để hiện giá trị data lên posts_list.html của app posts. Nhưng họ không hề nói thêm gì về phần này ngay cả khi mình check project mẫu thì cũng không hề có một file nào để sử dụng thư viên template trên và dĩ nhiên
là nó cũng không hoạt động. Vậy nên mình tự mò thì biết thư viện trên cho phép mình link models qua app khác nhau thông qua việc tạo một folder templatetags. Mình tự tìm hiểu và viết code ra thì có vẻ nó không in ra được, có ai kiểm tra code giúp mình dc không
models.py của app groups
class Group(models.Model):
name = models.CharField(malength=235, unique=True)
slug = models.SlugField(allow_unicode=True,unique=True)
descripsion = models.TextField(blank=True,default='')
descripsion_html = models.TextField(editable=False,default='',blank=True)
member = models.ManyToManyField(User,through='GroupMember')
def __str__(self):
return self.name
def save(self,*args, **kwargs):
self.slug =slugify(self.name)
self.descripsion_html = misaka.html(self.descripsion)
super().save(*args, **kwargs)
def get_absolute_url(self):
return reverse("groups:single", kwargs={"slug": self.slug})
class GroupMember(models.Model):
group = models.ForeignKey(Group,related_name='memberships',on_delete=models.CASCADE)
user = models.ForeignKey(User, related_name='user_groups',on_delete=models.CASCADE)
def __str__(self):
return self.user.username
group_tags.py trong folder templatetags
from django import template
from ..models import Group,GroupMember
register = template.Library()
@register.inclusion_tag('clonemedia/posts/templates/posts/post_list.html')
def get_other_group():
group_members = GroupMember.objects.all()
other_groups = Group.objects.all()
return {'other_group':other_groups, 'group_member':group_members }
post_list.html của posts app
{% load group_tags %}
<h5 class='title'> Your Groups</h5>
<ul class='list-unstyled'>
{% for member in group_member %}
<li class='group li-with-bullet'>
<a href="/redirect?Id=bPkSKQqMZ9erlLi6p21Q4A%3d%3d" url 'groups:single' slug=member.group.slug %}">{{ member.group.name }}</a>
</li>
{% endfor %}
</ul>
</div>
</div>
{% endif %}
<div class='card card-with-shadow'>
<div class='content'>
<h5 class='title'> All groups</h5>
<ul class='list-unstyled'>
{% for other in other_group %}
<li class="group li-with-bullet"><a href="/redirect?Id=bPkSKQqMZ9erlLi6p21Q4A%3d%3d" url 'groups:single' slug=other.slug %}">{{ other.name }}</a></li>
{% endfor %}