小编sha*_*vey的帖子

使用Flask/Jinja2将HTML传递给模板

我正在为Flask和SQLAlchemy构建一个管理员,我想将不同输入的HTML传递给我的视图render_template.模板框架似乎自动转义html,因此所有<"'>都转换为html实体.如何禁用它以便HTML呈现正确?

python jinja2 flask

142
推荐指数
5
解决办法
9万
查看次数

在循环中创建函数

我正在尝试在循环内创建函数并将它们存储在字典中.问题是字典中的所有条目似乎最终都映射到最后创建的函数.代码如下:

functions = []

for i in range(3):
    def f():
        return i

    # alternatively: f = lambda: i

    functions.append(f)
Run Code Online (Sandbox Code Playgroud)

这输出:

print([f() for f in functions])
# expected output: [0, 1, 2]
# actual output:   [2, 2, 2]
Run Code Online (Sandbox Code Playgroud)

知道为什么吗?

python function

79
推荐指数
2
解决办法
3万
查看次数

在__main__.py中使用模块自己的对象

我正试图从其内部访问模块的数据__main__.py.

结构如下:

mymod/
    __init__.py
    __main__.py
Run Code Online (Sandbox Code Playgroud)

现在,如果我__init__.py像这样公开一个变量:

__all__ = ['foo']
foo = {'bar': 'baz'}
Run Code Online (Sandbox Code Playgroud)

如何访问foo__main__.py

python program-entry-point init

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

多语言烧瓶应用

有没有一种让Flask应用程序多语言的首选方法?理想情况下,该解决方案将允许@app.route相同的视图为每种语言使用不同的URL,例如@app.route(en='/staff/', fr='/equipe/).我非常有信心我可以一起破解这样的东西,但现有的图书馆肯定会节省我一些时间.谢谢.

python multilingual localization internationalization flask

17
推荐指数
1
解决办法
8578
查看次数

OpenGL ES 2.0渲染到纹理

我正在尝试使用OpenGL ES 2.0渲染到纹理,但我似乎无法使其工作.

这就是我的进展方式:

    struct RenderTexture
    {
        GLuint framebuffer;
        GLuint tex;
        GLint old_fbo;


        RenderTexture(GLuint width, GLuint height)
        {
            glGetIntegerv(GL_FRAMEBUFFER_BINDING, &old_fbo);

            glGenFramebuffers(1, &framebuffer);
            glGenTextures(1, &tex);

            glBindFramebuffer(GL_FRAMEBUFFER, framebuffer);
            glBindTexture(GL_TEXTURE_2D, tex);
            glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 
                         width, height, 0, GL_RGBA, 
                         GL_UNSIGNED_BYTE, NULL);
            glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, 
                                   tex, 0);

            glClearColor(1, 0, 0, 1);
            glClear(GL_COLOR_BUFFER_BIT);

            GLuint status = glCheckFramebufferStatus(GL_FRAMEBUFFER);
            if (status != GL_FRAMEBUFFER_COMPLETE) {
                cout << status << endl; // this is not called
            }

            glBindFramebuffer(GL_FRAMEBUFFER, old_fbo);
        }

        void begin()
        {
            glGetIntegerv(GL_FRAMEBUFFER_BINDING, &old_fbo);
            glBindFramebuffer(GL_FRAMEBUFFER, framebuffer);
        }

        void end() …
Run Code Online (Sandbox Code Playgroud)

opengl-es ios opengl-es-2.0 glkit

13
推荐指数
2
解决办法
9691
查看次数

使用纹理中的alpha来绘制纯色

我如何使用OpenGLES 1.1(iPhone)绘制纹理,但只使用alpha绘制一些颜色?

结果应该是与原始纹理完全相同的alpha蒙版,内部使用单一纯色而不是原始颜色.

我使用glDrawArraysglCoordPointerglVertexPointer.

我认为做两次传球,一次是质地,另一次是纯色.我似乎无法找到倒置glBlendFunc(GL_ZERO, GL_ONE_MINUS_SRC_ALPHA);.

编辑:经过一些更多的环顾四周,我认为应该可以实现使用glTexEnvf.这只是找到正确论点的问题.

iphone opengl-es cocos2d-iphone

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

将纹理数据写入深度缓冲区

我正在尝试实现下面描述的技术:用深度合成图像.

我们的想法是使用现有纹理(从图像加载)作为深度蒙版,基本上伪造3D.

我面临的问题是在openglES中没有glDrawPixels.有没有办法在iPhone上完成同样的事情?

opengl-es gldrawpixels depth-buffer ios

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

将结构实例存储在std :: map中

我正在尝试将一些结构映射到其他一些实例,如下所示:

template <typename T>
class Component {
public:

    typedef std::map<EntityID, T> instances_map;

    instances_map instances;

    Component() {};

    T add(EntityID id) {
        T* t = new T();
        instances[id] = *t;
        return *t;
    };  
};
Run Code Online (Sandbox Code Playgroud)

然后我像这样使用它:

struct UnitInfos {
    int owner_id;
    int health;
    float x, y;
};

class LogicComponent : public Component<UnitInfos> {};
Run Code Online (Sandbox Code Playgroud)

问题是,以后稍后检索数据时,如下所示:

comp.instance[id];
Run Code Online (Sandbox Code Playgroud)

我得到一个breand新对象,其属性初始化为默认值.

这段代码是否存在内在错误,或者我是否遗漏了有关该问题的信息?


根据@aaa建议,我将代码更改为

typedef std::map<EntityID, T> instances_map;
instances_map instances;
T& add(EntityID id) {
    instances[id] = T();
    return instances[id];
};
Run Code Online (Sandbox Code Playgroud)

但当我访问它

UnitInfos &info = logic_c.instances[id];
Run Code Online (Sandbox Code Playgroud)

info.x的值仍为0.任何指针?


问题是我如何在另一个类中存储对LogicComponent的引用.使用LogicComponent logic_c; …

c++ templates struct stl

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

glReadPixels和GL_ALPHA

我正在尝试使用glReadPixels读取alpha像素值.我做的第一件事就是单独读取像素.为了加快速度,我尝试一次读取所有像素:

GLubyte *pixels = new GLubyte[w*h*4];
glReadPixels(0, 0, w, h, GL_RGBA, GL_UNSIGNED_BYTE, pixels);
Run Code Online (Sandbox Code Playgroud)

它工作,但真的很慢.现在我试图只检索alpha值,而不会浪费RGB组件的空间:

GLubyte *pixels = new GLubyte[w*h];
glPixelStorei(GL_UNPACK_ALIGNMENT, 1); 
glPixelStorei(GL_PACK_ALIGNMENT, 1);
glReadPixels(0, 0, w, h, GL_ALPHA, GL_UNSIGNED_BYTE, pixels);
Run Code Online (Sandbox Code Playgroud)

但我明白了:OpenGL error 0x0500 in -[EAGLView swapBuffers].

任何想法为什么INVALID_ENUM (0x0500)抛出?

iphone opengl-es cocos2d-iphone

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

static_assert 在编译时就知道的索引

有没有办法对编译时已知的索引进行静态断言,否则运行时断言?例子:

template <class T, int Dim>
class Foo
{
    T _data[Dim];
    public:
        const T &operator[](int idx) const
        {
            static_assert(idx < Dim, "out of range"); // error C2131: expression did not evaluate to a constant
            return _data[idx];
        }
};

int main()
{
    Foo<float, 2> foo;

    foo[0];
    foo[1];
    foo[2]; // compiler error

    for (int i=0; i<5; ++i)
    {
        foo[i]; // run time assert when i > 1
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ runtime static-assert compile-time c++11

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