Hỏi đáp

Chia sẻ kiến thức, cùng nhau phát triển

Thắc mắc về inclusion_tag django

00:05 10-04-2022 634 lượt xem 0 bình luận

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 %}

 

Bình luận

Để bình luận, bạn cần đăng nhập bằng tài khoản Howkteam.

Đăng nhập

Câu hỏi mới nhất