我有一些html(在这种情况下通过TinyMCE创建)我想添加到页面.但是,出于安全原因,我不想只打印用户输入的所有内容.
有没有人知道一个模板标签(最好是一个过滤器),它只允许渲染一个安全的html子集?
我意识到降价和其他人这样做.但是,它们还添加了额外的标记语法,这可能会让我的用户感到困惑,因为他们使用的是不知道降价的富文本编辑器.
我想写一个Django模板标签,我可以传递一个变量.
我希望模板标签的行为不同,具体取决于变量派生的模型字段的类型(CharField,BooleanField,IntegerField等)以及字段定义中使用的其他信息(max_length等)
我可以轻松地将变量传递给模板标记,遵循以下文档:将 模板变量传递给标记
有没有办法确定变量的原始模型字段的类名和模型参数?
换句话说:我可以制作这样的标签:
{% template_tag model.field %}
Run Code Online (Sandbox Code Playgroud)
并在标签渲染功能中访问来自模型的信息?
field = models.CharField(max_length=40)
Run Code Online (Sandbox Code Playgroud) 我试图导入 {{ user.userprofile. }} 和 {{ user.userprofile }} 没有成功。在 django shell 中,我可以使用 UserProfile.objects.all() 访问用户配置文件。
{{ 用户。}} 工作正常,所以我认为这是我的模型的问题,但我已经检查了 Django 文档“模型”、“数据库查询”和“模型实例引用”以及相关的 S/O 帖子,但如果它是我的模型这就是问题所在,我不知道还能搜索什么。
谢谢
模型.py
from django.db import models
from django.contrib.auth.models import User
from django.db.models.signals import post_save
from django.dispatch import receiver
class UserProfileManager(models.Manager):
pass
class UserProfile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='user')
can_inst_nat = models.BooleanField(verbose_name='I can explain grammar and word usage to people in my NATIVE language.', default=False)
can_inst_tar = models.BooleanField(verbose_name='I can explain grammar and word usage to people in my TARGET language.', …Run Code Online (Sandbox Code Playgroud) 我尝试制作一个模板标签来获取登录用户request.user,我尝试了这个
在设置.py
'context_processors': [
'django.core.context_processors.request',
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
Run Code Online (Sandbox Code Playgroud)
这是我的模板标签
from django import template
register = template.Library()
@register.simple_tag
def is_member(context):
request = context['request'].user
if request.user in request.user.model_name.admins.all:
return True
else:
return False
Run Code Online (Sandbox Code Playgroud)
我必须确保登录的用户是否是管理员(M2M)字段中的成员之一,但我收到此错误
没有名为“django.core.context_processors”的模块
当我尝试删除'django.core.context_processors.request'settings.py 文件中的这一行时,我收到此错误
“is_member”未收到参数的值:“context”
更新 - 模板
'context_processors': [
'django.core.context_processors.request',
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
Run Code Online (Sandbox Code Playgroud)
任何建议我都会感激谢谢,艺术
使用Django模板标签,我试图检查我传递给模板的对象布尔字段(使用python)是否为True.
如果我在页面上打印对象,我会看到值True/False:
<p>{{ obj.bool }}</p>
Run Code Online (Sandbox Code Playgroud)
我试过了:
{% if {{ obj.bool }} == True %}
HELLO
{% endif %}
Run Code Online (Sandbox Code Playgroud)
这会引发语法错误
无法解析余数:'{{'from'{{'
和:
{% if '{{ obj.bool }}' == 'True' %}
<p>HELLO</p>
{% endif %}
Run Code Online (Sandbox Code Playgroud)
没有给我什么......?
django ×5
templatetags ×5
python ×3
field ×1
html ×1
markdown ×1
model ×1
templates ×1
user-profile ×1
variables ×1