【问题标题】:My Django Middleware Isn't Working The Way It Should我的 Django 中间件没有按应有的方式工作
【发布时间】:2019-11-05 20:56:32
【问题描述】:

如何从中间件文件的UserBanning 模型中将reason 传递给banned.html?几乎一切正常,但我似乎无法从模型中获得 reason 以显示在模板 banned.html 中,而且我不确定方式,所以任何帮助都会令人惊奇地了解中间件。我应该改用process_request() 吗?

谢谢

models.py:

from django.db import models
from django.contrib.auth.models import User
from django.conf import settings

class UserBanning(models.Model):
    user = models.ForeignKey(User, verbose_name="Username", help_text="Choose Username", on_delete=models.CASCADE)
    ban = models.BooleanField(default=True, verbose_name="Ban", help_text="Users Bans")
    reason = models.CharField(max_length=500, blank=True)

    class Meta:
        verbose_name_plural = "User Banning"
        ordering = ('user',)

    def __str__(self):
        return f"{self.user}"

中间件.py:

from .models import UserBanning
from django.shortcuts import render


class BanManagement():
    def __init__(self, get_response):
        self.get_response = get_response

    def __call__(self, request):
        banned = UserBanning.objects.all()
        context = {
            'banned': banned,
        }

        if(banned.filter(ban=True, user_id=request.user.id)):
            return render(request, "account/banned.html", context)
        else:
        response = self.get_response(request)
        return response

banned.html:

{% extends "base.html" %}

{% block content %}
<p>Your account has been banned. Reason: {{ banned.reason }}</p>
{% endblock content %}

【问题讨论】:

    标签: django templates middleware


    【解决方案1】:

    你快完成了。剩下的问题是您需要在设置context 之前在request.user.id 上设置filter,以便上下文仅包含此特定用户的禁令。比如:

        banned = UserBanning.objects.filter(ban=True, user=request.user)
    
        if banned:
            context = {'banned': banned[0]}
            return render(request, "account/banned.html", context)
        else:
    

    【讨论】:

    猜你喜欢
    • 2020-06-17
    • 2018-04-10
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 2022-08-17
    • 2016-02-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多