django message组件

目录

1、配置(数据保存的位置)3种类型

1、1三种存储方式类型

1、2注册app

1、3配置中间件

2、设置值

3、读取值

1、1python取值调用

1、2html取值调用

4、通过模板自定义显示颜色:

1、配置文件中:

2、模板中调用message取值

3、需要配合js

4、自定义等级

5、其他


原理:将数据通过message组件保存起来,后续把数据取出来,并把数据删除

场景:可以将一个页面的数据,在另一个页面获取(从定向)

基于message组件实现撤单的业务。

详细见代码。

注意:ajax方式撤单,不要用message组件,只有跳转操作时才使用

1、配置(数据保存的位置)3种类型

1、1三种存储方式类型

# MESSAGE_STORAGE = 'django.contrib.messages.storage.fallback.FallbackStorage'
# MESSAGE_STORAGE = 'django.contrib.messages.storage.cookie.CookieStorage'
MESSAGE_STORAGE = 'django.contrib.messages.storage.session.SessionStorage'

1、2注册app

INSTALLED_APPS = [
    # 'django.contrib.admin',
    # 'django.contrib.auth',
    # 'django.contrib.contenttypes',
    # 'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    "web.apps.WebConfig"
]

1、3配置中间件

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    # 'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'utils.md.AuthMiddleware'
]

1、4模板(便于模板中使用)

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                # 'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

2、设置值

from django.contrib import messages
messages.add_message(reqeust, messages.SUCCESS, "删除成功1")
messages.add_message(reqeust, messages.ERROR, "操作失败")

3、读取值

1、1python取值调用

from django.contrib.messages.api import get_messages
messages = get_messages(request)
for msg in messages:
    print(msg)

1、2html取值调用

<ul>
    {% for message in messages %}
	    <li>{{ message.tags }} {{ message }}</li>
    {% endfor %}
</ul>

注意:1、message的数据必须通过for循环才能取道里面的值

4、通过模板自定义显示颜色:

1、配置文件中:

MESSAGE_DANDER_TAG = 50
MESSAGE_TAGS = {
    MESSAGE_DANDER_TAG: "danger"
}

2、模板中调用message取值

{% if messages %}
        <div class="top-message-error">
            {% for obj in messages %}
                <div class="alert alert-{{ obj.level_tag }}">
                    {{ obj.message }}
                </div>
            {% endfor %}

        </div>
    {% endif %}

3、需要配合js

{% block js %}
    <script>
        setTimeout(function () {
            $(".top-message-error").addClass('hide');
        }, 5000);
    </script>
{% endblock %}

4、自定义等级

在配置文件中添加

MESSAGE_DANDER_TAG = 50
MESSAGE_TAGS = {
    MESSAGE_DANDER_TAG: "danger"
}

后续调用时

messages.add_message(request, 50, "课程不存在")

5、其他

代码参考day06

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Bootstrap样式来美化Django Form组件。 首先,在Django项目中安装Bootstrap,可以通过pip命令安装: ``` pip install django-bootstrap4 ``` 然后,在Django项目的settings.py文件中添加以下内容: ``` INSTALLED_APPS = [ # ... 'bootstrap4', # ... ] # 设置Bootstrap版本 BOOTSTRAP4 = { 'include_jquery': True, 'jquery_url': '//cdn.bootcss.com/jquery/3.3.1/jquery.min.js', 'base_url': '//cdn.bootcss.com/bootstrap/4.1.3/', } ``` 接着,在Django Form组件中使用Bootstrap样式: ```python from django import forms from django.utils.translation import gettext_lazy as _ class ContactForm(forms.Form): name = forms.CharField( label=_("Your Name"), max_length=100, widget=forms.TextInput(attrs={'class': 'form-control'}), ) email = forms.EmailField( label=_("Your Email"), widget=forms.EmailInput(attrs={'class': 'form-control'}), ) message = forms.CharField( label=_("Message"), widget=forms.Textarea(attrs={'class': 'form-control'}), ) ``` 在这个例子中,我们在每个字段的widget参数中添加了class属性,这个class属性的值为form-control,这样就可以使用Bootstrap样式来美化表单组件。 最后,在HTML模板中使用Bootstrap样式: ```html {% extends "base.html" %} {% block content %} <div class="container"> <form method="post"> {% csrf_token %} {{ form.as_p }} <button type="submit" class="btn btn-primary">Submit</button> </form> </div> {% endblock %} ``` 在这个例子中,我们使用了Bootstrap的container类和btn类来美化HTML模板。然后使用form.as_p来渲染表单组件,这个方法会把每个表单组件渲染成一个p标签,每个p标签中包含一个label标签和一个input标签,这样我们就可以使用Bootstrap样式来美化整个表单了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值