Max*_*ith 3 html css django django-allauth django-messages
默认情况下,Allauth的消息以文本文件的形式存储在模板目录中,它们类似于:
{% load i18n %}
{% blocktrans %}You cannot remove your primary e-mail address ({{email}}).{% endblocktrans %}
Run Code Online (Sandbox Code Playgroud)
这些使用django的模板标签,但不是“ HTML友好的”。我想对这些样式进行样式设置,例如:
{% load i18n %}
<div class="alert alert-danger alert-dismissible" role="alert">
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
{% blocktrans %}You cannot remove your primary e-mail address ({{email}}).{% endblocktrans %}
</div>
Run Code Online (Sandbox Code Playgroud)
但是上面的代码只是将HTML呈现为文本。我不能将HTML放在模板中,而只能在模板中做{{message}},因为我想根据每个消息的偏向(至少是颜色!)来更改其中的一些内容。
我该怎么做?谢谢!
模板是消息样式标记的地方,而不是消息.txt文件。您应该能够通过Django的默认值或条件语句(如果需要)实现每个案例的变体。我看到您正在使用Bootstrap,并且在许多情况下,默认Django消息传递标签可以很好地映射到Bootstrap自己的警报类。在视图中创建消息时...
messages.success(request, 'You have logged in successfully.')
Run Code Online (Sandbox Code Playgroud)
...每个Django的消息包含其电平(的字符串表示'info','success'等)作为标签的属性。您可以将这些标记属性用于许多上下文格式设置需求。因此,您可以将其传递给(例如,基本)模板,例如:
<div class="alert alert-{{ messages.tags }} alert-dismissible" role="alert">
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
{{ message }}
</div>
Run Code Online (Sandbox Code Playgroud)
如果您的消息具有级别,success则此处呈现的CSS类将为alert-success,因此Bootstrap将显示绿色警报。如果状态为info,则状态为,alert-info蓝色等。
Django的默认消息级别和字符串表示形式在中定义django/contrib/messages/constants.py:
DEFAULT_TAGS = {
DEBUG: 'debug',
INFO: 'info',
SUCCESS: 'success',
WARNING: 'warning',
ERROR: 'error',
}
DEFAULT_LEVELS = {
'DEBUG': DEBUG,
'INFO': INFO,
'SUCCESS': SUCCESS,
'WARNING': WARNING,
'ERROR': ERROR,
}
Run Code Online (Sandbox Code Playgroud)
将此与Bootstrap的默认警报类和上下文格式进行比较:
info,success以及warning类反映Django的消息的水平,但Django的最严重水平error,而引导的是danger。为了使Django的error级别消息易于在Bootstrap的alert-danger类中显示,请将DEFAULT_TAGS条目从更改ERROR: 'error'为ERROR: 'danger'。或者,也可以保持Django核心代码完整无缺,'ERROR': MESSAGES_ERROR_STRING并在您的设置文件中定义该常量。(您甚至可以创建自定义的Bootstrap类,并定义自己的Django消息级别以与其相符。)
如果您想专门使用allauth自定义内容,例如,将消息级别设置为与allauth的默认值不同(例如,将登录消息设置为infolevel而不是级别),则success可以直接在allauth.account.views(和allauth.socialaccount.views)中进行更改
您还可以将额外的标签传递给Django消息,并将其用于条件格式设置:例如,请参阅文档和此答案中的额外消息标签。
| 归档时间: |
|
| 查看次数: |
2386 次 |
| 最近记录: |