Django模板:{%if%}标签无法使其正常工作

时间:2017-11-07 07:32:00

标签: django django-templates

我正在寻找一种方法,以便我的模板可以识别我的扩展用户配置文件中的属性,特别是如果他是联盟会员,并在模板中显示不同的内容,无论他是否是联盟会员。是否还有其他方法可以构建装饰器?

我使用了其他{%if%}标记,例如此内置身份验证请求{% if request.user.is_authenticated %}

models.py project / useprofile /,这本书在另一个应用程序项目/书中

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    affiliate = models.BooleanField(default=False)

add_book.html

{%extends 'base.html' %}
{% load i18n %}
{% load crispy_forms_tags %}


{% block content1 %}
{% if userprofile.profile.affiliate = True %}
<h1>New post</h1>
<form method="POST" class="post-form">
    {% csrf_token %}
    {{ form|crispy }}
    <button type="submit" class="save btn btn-primary">Save</button>
</form>
{% endif %}

{% endblock %}

urls.py

url(r'^book/add/$', 'book.views.addbook', name='addbook'),

views.py

def addbook(request):
if request.method == "POST":
    form = BookForm(request.POST)
    if form.is_valid():
        book = form.save(commit=False)
        book.save()
        return redirect('home')
else:
    form = BookForm()

return render(request, 'add_book.html',
    {'form':form,
 })

更新:我找到了一个解决我问题的简单方法,只需要将{% if user.profile.affiliate %}放在我的模板中,因为我已经扩展了django用户配置文件,并且会员是boolean所以我不需要做等于==部分它通过True,但我仍在寻找其他可用选项

0 个答案:

没有答案