标签: django-messages

在rest_framework中使用django消息框架

如何让django消息框架与rest_framework一起使用?

这是我的看法

@api_view(['GET', 'POST'])
def myview(request):
    if request.method == 'GET':
        #return a Response object
    else:
        #process post data
        messages.success(request, 'Success')
        return Response(response)
Run Code Online (Sandbox Code Playgroud)

我遇到以下错误

add_message() argument must be an HttpRequest object, not 'Request'
Run Code Online (Sandbox Code Playgroud)

这是因为rest_framework不使用普通HttpRequest对象,默认情况下在django中使用.

如何在休息框架中使用消息传递框架?

django django-rest-framework django-messages

10
推荐指数
1
解决办法
6096
查看次数

使用基于类的视图显示成功消息

我想在保存一行时显示一条成功的消息,使用 Django 的消息框架和基于类的视图,代码如下所示,但不显示消息。

任何帮助将不胜感激

#views.py

from django.views.generic import ListView, CreateView, UpdateView, TemplateView
from django.contrib.messages.views import SuccessMessageMixin

class CreateEmployee(SuccessMessageMixin, CreateView):
    model = Employee
    template_name = 'employees/create.html'
    form_class = frmCreate

    def get_success_url(self):
       return reverse('Employees:Create')

    def get_context_data(self, **kwargs):
        contexto = super(CreateEmployee, self).get_context_data(**kwargs)
        contexto['action'] = reverse('Employees:Create')
        return contexto

    success_message = 'Employee successful created'



#template
#create.html

<form action="{{ action }}" method="POST" role="form">
    {% csrf_token %}

    {{ form.as_p }}

    <input type="submit" value="Save" class="btn btn-success">
<form>

{% if messages %}
    <div class="col-lg-3 color03">
        <ul class="messages">
            {% for …
Run Code Online (Sandbox Code Playgroud)

django django-messages

9
推荐指数
3
解决办法
1万
查看次数

Django消息模板标签检查

我想检查消息标签是否为INFO?

如何在模板文件中检查?

我尝试了这个,但它不起作用:

{% if messages %}
    <ul>
        {% for message in messages %}
            <li>
                {% if message.tag == "INFO" %}
                    {{ message }}
                {% endif %}
            </li>
        {% endfor %}
    </ul>
{% endif %}
Run Code Online (Sandbox Code Playgroud)

我甚至尝试了其他类似的组合,message.tag.info == "INFO"但它们似乎没有用.检查它的正确方法是什么?

django django-templates django-messages

8
推荐指数
1
解决办法
4954
查看次数

如何在 django messages.error 中新建一行

我有一行代码

messages.error(request, ('ERROR: upload failed. Try again'))
Run Code Online (Sandbox Code Playgroud)

在我的模板中弹出一条消息

上传失败。再试一次

但我想在点之后换一条新线,比如:

上传失败。
再试一次

我怎么得到它?

我试过了

upload failed.\n Try again
Run Code Online (Sandbox Code Playgroud)

upload failed.<br/> Try again
Run Code Online (Sandbox Code Playgroud)

upload failed.{{text|linebreaks}} Try again
Run Code Online (Sandbox Code Playgroud)

但它不起作用......

python django newline django-messages

8
推荐指数
1
解决办法
1237
查看次数

在HttpResponseRedirect之后没有显示Django消息

尝试了很多东西,但没有一个真的有帮助.

我有一个URL例子:

HTTP://本地主机:8000 /用户/编辑事务/的object_id = 23a959d0561711e59e36acd1b8679265&键入= grossary

它调用如下view:

def edit_transaction(request):

    if request.method == "POST":
        if something is True:
            messages.error(request, 'Error message here')

            # this don't work
            return HttpResponseRedirect(request.META.get('HTTP_REFERER'))

            # but this work
            template = "user/xyz/abc.html"
            render(request, template)
        else:
            return HttpResponseNotFound()
    else:
        context = {
             'key1': 'value1', 
             'key2': 'value2',
        }
        template = "user/xyz/abc.html"
        render(request, template, context)
Run Code Online (Sandbox Code Playgroud)

内部模板:

{% if messages %}

<h1>I am inside MESSAGES</h1>

    {% for message in messages %}
        {% if message.tags == 'success' %} …
Run Code Online (Sandbox Code Playgroud)

django django-messages

6
推荐指数
1
解决办法
5647
查看次数

在 Django 中传递消息时重定向

在检查user_settings用户是否存在(如果它们不存在 - 用户被带到表单输入并保存它们)后,我试图运行重定向。

我想将用户重定向到适当的表单,并告诉他们必须“保存他们的设置”,以便他们知道为什么要重定向。

该函数如下所示:

def trip_email(request):
    try:
        user_settings = Settings.objects.get(user_id=request.user.id)
    except Exception as e:
        messages.error(request, 'Please save your settings before you print mileage!')
        return redirect('user_settings')
Run Code Online (Sandbox Code Playgroud)

此功能检查用户设置并适当地重定向我 - 但该消息从未出现在模板的顶部。

您可能首先会想:“您的 Django 中的消息设置是否正确?”

我还有其他功能,我使用重定向消息,消息在模板中按预期显示,没有问题。消息被适当地集成到我的模板中并起作用。

只有当我使用时redirect,我才看到我正在发送的消息。

如果我render像下面这样使用,我会看到消息(但当然,URL 不会改变 - 我希望发生这种情况)。

def trip_email(request):
    try:
        user_settings = Settings.objects.get(user_id=request.user.id)
    except Exception as e:
        messages.error(request, 'Please save your settings before you print mileage!')
        form = UserSettingsForm(request.POST or None)
        return render(request, 'user/settings.html', {'form': form})
Run Code Online (Sandbox Code Playgroud)

我还有其他一些需要使用 a 的地方,redirect …

python django redirect messages django-messages

6
推荐指数
1
解决办法
7823
查看次数

Django:成功保存表单后自定义消息

每当我在管理界面中保存模型时,它都会显示通常的"已成功保存的消息".但是,我想知道是否可以自定义此消息,因为我想要警告用户他刚刚保存的内容以及这些操作的含义.

class PlanInlineFormset(forms.models.BaseInlineFormset):
    def clean(self):
        ### How can I detect the changes?  
        ### (self.changed_data doesn't work because it's an inline)
        ### and display what he/she just changed at the top AFTER the successful save?

class PlanInline(admin.TabularInline):
    model = Plan
    formset = PlanInlineFormset
Run Code Online (Sandbox Code Playgroud)

django django-forms django-admin django-messages

5
推荐指数
1
解决办法
7003
查看次数

Django 消息框架 - 默认缺少 i18n

默认情况下,django 消息框架不会正确本地化它的消息。例如在管理界面

在此处输入图片说明

正如您所看到的,管理面板中的所有其他内容都已本地化。翻译文件存在。这是我的设置。


INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    ...
]

MIDDLEWARE = [
    'debug_toolbar.middleware.DebugToolbarMiddleware',
    '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',
    'django.middleware.locale.LocaleMiddleware',
]

LANGUAGE_CODE = 'ru' # I've tried 'ru-RU'

TIME_ZONE = 'Europe/Moscow'

USE_I18N = True

USE_L10N = True

USE_TZ = True
Run Code Online (Sandbox Code Playgroud)

如何解决这个问题?提前致谢。我有 Django 3.0.6 版。这个错误在 django 1.8 中也不存在

django django-messages

4
推荐指数
1
解决办法
119
查看次数

Django消息框架,内置Jinja2后端

如何在Django 1.8中使用带有Jinja2的Django消息框架和内置的Jinja2后端?

我试着像以前那样做,但后来记得Jinja2后端没有Django Templating Language的上下文处理器.是否可以通过会话请求.

我一直在使用Django几个月,所以即使答案很明显,请告诉我.

django jinja2 django-messages

3
推荐指数
1
解决办法
1525
查看次数

django allauth自定义消息:使用html / css设置消息样式

默认情况下,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">&times;</span>
            </button>
            {% blocktrans %}You cannot remove your primary e-mail address ({{email}}).{% endblocktrans %}
 </div>
Run Code Online (Sandbox Code Playgroud)

但是上面的代码只是将HTML呈现为文本。我不能将HTML放在模板中,而只能在模板中做{{message}},因为我想根据每个消息的偏向(至少是颜色!)来更改其中的一些内容。

我该怎么做?谢谢!

html css django django-allauth django-messages

3
推荐指数
1
解决办法
2386
查看次数