#python #django
#python #django
Вопрос:
Я работаю над базовым проектом django для социальных сетей с помощью курса udemy. Ниже приведены модели, которые я создал:
group : models.py
register = template.Library()
class Group(models.Model):
name = models.CharField(max_length=255,unique=True)
slug = models.SlugField(allow_unicode=True,unique=True)
description = models.TextField(blank=True,default='')
description_html = models.TextField(editable=False,default='',blank=True)
members = models.ManyToManyField(User,through="GroupMember")
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)
post : models.py
class Post(models.Model):
user = models.ForeignKey(User,related_name='posts',on_delete=models.CASCADE)
created_at = models.DateTimeField(auto_now=True)
message = models.TextField()
message_html = models.TextField(editable=False)
group = models.ForeignKey(Group,related_name='posts',null=True,blank=True)
И часть, которая не имеет для меня никакого смысла, заключается в следующем:
post_list.html
{% for member_group in get_user_groups %}
<a href="{% url 'groups:single' slug=member_group.group.slug %}">{{ member_group.group.name
}}</a></li>
{% endfor %}
{% for other_group in get_other_groups %}
<a href="{% url 'groups:single' slug=other_group.slug %}">{{ other_group.name }}</a></li>
{% endfor %}
Что означает «get_user_groups», «get_other_groups» и «register = template.» Library ()» означает здесь и как они связаны? Также чего они пытаются достичь здесь? Я невежественный, ребята, помогите мне.
Комментарии:
1.
get_user_groups
будет контекстной переменной, которая передается шаблону из представления, кроме того, она кажется итеративной.2. Я надеюсь, что у вас будет более подробная информация из официального документа Django
3. Вы используете
register = template.Library()
, когда создаете пользовательский тег шаблона или фильтр. Этой строки не должно бытьmodels.py
, и если вы не используете ее где-то в том же файле (напримерregister.tag
, илиregister.filter
, тогда она ничего не делает.4. Вы не показали никакого кода, включающего
get_user_groups
orget_user_groups
, поэтому мы не можем объяснить, что это такое.
Ответ №1:
Это пример пользовательских тегов шаблонов. Вероятно, существует custom_tags.py файл, в котором вы создали пользовательские теги шаблонов, находится в папке с именем template_tags, которая показывает проделанную работу по созданию содержимого этих тегов.
get_user_groups не извлекается из views.py или непосредственно ссылаясь на ваш models.py . Вместо этого он ссылается на запросы, хранящиеся в custom_tags.py
Подробную разбивку можно найти здесь: https://medium.com/@hiteshgarg14/creating-custom-template-tags-in-django-application-7bd1dcfeb144
Это может быть полезно, если вы хотите отображать содержимое запроса в различных представлениях без необходимости избыточной вставки этого запроса в несколько функций внутри views.py . В этом случае, похоже, он будет использоваться для вставки информации о членстве в группах в различных представлениях с помощью пользовательских тегов.