django-templates - 如何在我的模板 Django 中显示我需要的按钮?
问题描述
我需要:
1)如果用户通过表单创建了类的对象,那么他会看到调用对象详细信息网页的按钮。
2) 如果一个用户没有创建该类的对象,但另一个用户创建了,那么他会看到调用该表单创建对象的按钮,并且该用户将成为该对象的作者。
3) 如果用户没有通过表单创建类的对象,那么他会看到调用该表单的按钮。
如果用户没有创建该类的对象,但另一个用户创建了,那么他会看到调用此表单以创建对象的按钮,并且该用户将成为该对象的作者。
我做的:
{% if list %}
{% for i in list %}
{% if request.user == i.author %}
<a class="btn" href="{% url 'detail' i.id %}" role="button">
{{i.detail}}
</a>
{% else %}
<button type="button" class="btn" data-toggle="modal" data-target="#form">
the form button
</button>
{% endif %}
{% endfor %}
</div>
{% else %}
<button type="button" class="btn btn-primary mr-4" data-toggle="modal" data-target="#digital">
Кнопка для вызова формы
</button>
{% endif %}
但是如果用户创建了一个类的对象,那么他会看到这两个按钮。
解决方案
视图.py
class MyClassCreateView(LoginRequiredMixin, CustomSuccessMessageMixin, CreateView):
model = MyClass
template_name = 'mypage.html'
form_class = MyClassForm
success_url = reverse_lazy('mypage')
success_msg = 'сохранён'
def get_context_data(self, **kwargs):
kwargs['list_mylist'] = MyClass.objects.all()
list_mylist = kwargs['list_mylist']
for i in list_mylist:
if i.author == self.request.user:
print('my_button')
kwargs['my_button'] = True
break
return super().get_context_data(**kwargs)
模板
{% if my_button %}
{% for i in list_mylist %}
{% if request.user == i.author %}
<a class="btn btn-primary" href="#" role="button">
кнопка первая
</a>
{% endif %}
{% endfor %}
{% else %}
<button type="button" class="btn btn-primary mr-4" data-toggle="modal" data-target="#class">
кнопка вторая
</button><br>
{% endif %}
推荐阅读
- memory - 如何在 TPM 上创建内存
- python - 文本python docx左侧的图像
- python - AttributeError:“Bot”对象没有属性“add_roles”
- wordpress - WordPress后端不显示所有帖子
- reporting-services - SSRS/BIDS开发设置VS2017
- powershell - 改进 Get-ChildItem 功能
- django-models - Django 模型:具有引用外键的属性不会出现在 ListApiView 中
- java - 休眠和Oracle中的事务超时
- python - 如何为字符串中的每个元素提取第二个单词。(Python)
- laravel - 如何使用 laravel 响应器在元中引入分页?