小编Gra*_*ike的帖子

Django - 如何从中间件修改模板上下文

我正在创建一个 Django 中间件,用于管理带有会话的“购物车”。我能够像这样成功修改会话数据:

class ShoppingCartMiddleware:

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

    def __call__(self, request):
        # Ensure shopping cart exists
        if request.session.get('shopping_cart') is None:
            request.session['shopping_cart'] = {'items': []}
        return self.get_response(request)
Run Code Online (Sandbox Code Playgroud)

我现在需要修改模板上下文,以便我的模板可以访问有关购物车的某些信息(商品数量等)。我查看了上下文处理器,但上下文处理器无法查看会话甚至当前上下文。

我尝试process_template_response像这样使用钩子:

def process_template_response(self, request, response):
    response.context_data['cart_num_items'] = len(request.session['shopping_cart']['items'])
    return response
Run Code Online (Sandbox Code Playgroud)

但显然当钩子被执行时,response.context_dataNone.

有谁知道如何使用中间件编辑模板上下文?任何帮助,将不胜感激。

django middleware

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

用Java创建一个类数组

是否可以在Java中创建静态类数组?例如:

SceneObject[] scenes = {Loading.class, Menu.class};
// Loading and Menu extend SceneObject
Run Code Online (Sandbox Code Playgroud)

我们需要通过数组调用静态方法,而不是实例化它们.

编辑:

以下是我们正在努力实现的目标.我们也可以使用很多开关,但在每种方法中将每个对象添加到每个开关听起来都是多余的.

package net.bitworm.gameengine;

import org.newdawn.slick.GameContainer;
import org.newdawn.slick.Graphics;

import net.bitworm.scenes.*;

public class SceneController {

public enum Scene{
    LOADING_SCENE,
    MENU,
    SCENE_1
}

public static SceneObject[] scenes = {new Loading(), new Menu()};

public volatile static Scene currentScene = Scene.LOADING_SCENE;

public static void setScene(Scene newScene){
    currentScene = newScene;
    System.out.println("Switched to " + currentScene.toString());
}

public static void update(GameContainer container, int delta){
    scenes[currentScene.ordinal()].update(container, delta);
}
public static void render(GameContainer container, Graphics …
Run Code Online (Sandbox Code Playgroud)

java arrays static class

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

标签 统计

arrays ×1

class ×1

django ×1

java ×1

middleware ×1

static ×1