小编fir*_*ush的帖子

Django CSRF检查失败,出现Ajax POST请求

我可以通过我的AJAX帖子使用一些符合Django的CSRF保护机制的帮助.我按照这里的指示:

http://docs.djangoproject.com/en/dev/ref/contrib/csrf/

我已经完全复制了他们在该页面上的AJAX示例代码:

http://docs.djangoproject.com/en/dev/ref/contrib/csrf/#ajax

getCookie('csrftoken')xhr.setRequestHeader打电话之前打印了一个警告打印内容,确实填充了一些数据.我不确定如何验证令牌是否正确,但我鼓励它发现并发送一些东西.

但是Django仍然拒绝我的AJAX帖子.

这是我的JavaScript:

$.post("/memorize/", data, function (result) {
    if (result != "failure") {
        get_random_card();
    }
    else {
        alert("Failed to save card data.");
    }
});
Run Code Online (Sandbox Code Playgroud)

这是我从Django看到的错误:

[23/Feb/2011 22:08:29]"POST/memorize/HTTP/1.1"403 2332

我确定我错过了一些东西,也许这很简单,但我不知道它是什么.我一直在搜索SO,并看到一些关于通过csrf_exempt装饰器关闭CSRF检查我的视图的信息,但我发现它没有吸引力.我已经试过了,但它确实有效,但我宁愿让我的POST以Django的设计方式工作,如果可能的话.

为了防止它有用,这里是我的观点的主旨:

def myview(request):

    profile = request.user.profile

    if request.method == 'POST':
        """
        Process the post...
        """
        return HttpResponseRedirect('/memorize/')
    else: # request.method == 'GET'

        ajax = request.GET.has_key('ajax')

        """
        Some irrelevent code...
        """

        if ajax:
            response = HttpResponse()
            profile.get_stack_json(response)
            return response
        else:
            """
            Get …
Run Code Online (Sandbox Code Playgroud)

python django ajax csrf

175
推荐指数
10
解决办法
14万
查看次数

为什么必须将 const 添加到 constexpr 以进行字符串文字声明?

本声明:

char constexpr *const s = "hello";
Run Code Online (Sandbox Code Playgroud)

失败并出现此错误:

g++ -g -Wall -Werror -std=c++17 test.cc -o test
test.cc:8:31: error: ISO C++11 does not allow conversion from string literal to 'char *const' [-Werror,-Wwritable-strings]
char constexpr *const s = "hello";
Run Code Online (Sandbox Code Playgroud)

但是如果我将 const 添加到 constexpr,编译器就会很高兴:

char const constexpr *const s = "hello";
Run Code Online (Sandbox Code Playgroud)

汇编:

g++ -g -Wall -Werror -std=c++17 test.cc -o test
./test
hello
Run Code Online (Sandbox Code Playgroud)

这对我来说似乎不直观。为什么const需要装饰constexpr?constexpr 不意味着 const 吗?如果它是一个编译器常量,它怎么不是其他意义上的常量?某些东西是否有可能是 constexpr 但以其他方式改变而不是恒定的?

这是一个最小的神箭:

https://godbolt.org/z/sSQMVa


更新:

StoryTeller 的回答是理解这一点的关键。我已经接受了他的回答,但我会在这里进行扩展,以防对其他人试图理解这一点有所帮助。与 const 交互时,我习惯于将 const 视为应用于其左侧的项目。因此:

char a[] = "hello";
char * …
Run Code Online (Sandbox Code Playgroud)

c++ constants constexpr

22
推荐指数
1
解决办法
505
查看次数

vimdiff 有 neovim 版本吗

我最近开始使用 nvim ( neovim )。它通常工作得很好,但是当我运行 vimdiff 时,我注意到我遇到了运行常规 vim 时遇到的启动错误。我已经修复了这些问题,以便 vim 和 nvim 在我的系统上运行时不会出现错误,因此 vimdiff 现在可以正常工作。但这让我想知道:vimdiff 是否有 neovim 版本?或者我应该同时维护 vim 和 neovim,以便常规 vim 可以很好地用于 vimdiff?

neovim

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

如何为bin目录中的脚本编写Python单元测试

Python unittest模块似乎假设一个项目的目录结构,其中有一个项目根级目录,其中包含源代码和该目录下的测试.

但是,我想在我的~/bin目录中编写Python脚本并在另一个目录中测试它(比方说~/dev/tests).有没有办法让我使用命令行界面运行单元测试,而无需设置我的PYTHONPATH环境变量和创建__init__.py文件等等?

这是一个展示我想要的简单例子:

~/bin/candy:

#!/usr/bin/env python

def candy():
    return "candy"

if __name__ == '__main__':
    print candy()
Run Code Online (Sandbox Code Playgroud)

~/dev/tests/test_candy.py:

#!/usr/bin/env python

import unittest
import candy

class CandyTestCase(unittest.TestCase):

    def testCandy(self):
        candyOutput = candy.candy()

        assert candyOutput == "candy"
Run Code Online (Sandbox Code Playgroud)

我注意到如果出现以下情况,可以很方便

  • 这两个文件以py扩展名命名(candy.pytest_candy.py)
  • 这两个文件位于同一目录中
  • 测试目录中运行以下测试:$ python -m unittest test_candy

我可以使用unittest模块运行python 来执行以下操作,而无需在我的环境中明确设置任何内容:

  • 我正在测试的文件没有py扩展名(只是~/candy).
  • 我不在乎是否test_candy有py作为扩展名.
  • 我想要candytest_candy.py不共享一个共同的根(我的主目录除外).

如果通过简单的调用python -m unittest无法做到这一点,那么实现这一目标的最简单方法是什么?

python unit-testing python-unittest

8
推荐指数
3
解决办法
1767
查看次数

Visual Studio编译std库中的错误

我正在尝试按照此处提供的说明松散地在Visual Studio 2015 RC中构建Facebook愚蠢:https: //github.com/jbandela/folly/tree/vc11

我希望通过2015年扩展的C++ 11支持,我可能比以前更容易.我一直在处理一个不错的剪辑问题,但我现在得到一组对我没有意义的编译错误.这是编译输出的顶部,第一个错误:

2>------ Build started: Project: folly, Configuration: Debug Win32 ------
2>  pch.cpp
2>  Unknown compiler version - please run the configure tests and report the results
2>c:\program files (x86)\microsoft visual studio 14.0\vc\include\xstring(26): error C2143: syntax error: missing ',' before '<'
2>c:\program files (x86)\microsoft visual studio 14.0\vc\include\xstring(26): error C2143: syntax error: missing ',' before '<'
Run Code Online (Sandbox Code Playgroud)

这是它带来的错误位置的源代码,同样在std命名空间的xstring中:

template<class _Mystr>
class _String_const_iterator
    : public _Iterator012<random_access_iterator_tag, // <---- line 26
        typename _Mystr::value_type,
        typename _Mystr::difference_type,
        typename _Mystr::const_pointer, …
Run Code Online (Sandbox Code Playgroud)

c++ visual-c++ visual-studio-2015 folly

7
推荐指数
1
解决办法
2092
查看次数

std ::在堆栈对象上移动

我知道这是一个非常基本的,甚至可能是令人尴尬的问题,但我无法理解这一点.如果我std ::从堆栈上的东西移动到另一个对象,当原始文件超出范围时,是否还可以使用另一个对象?

#include <iostream>
#include <string>

int
main(int argc, char* argv[])
{
    std::string outer_scope;

    {
        std::string inner_scope = "candy";
        outer_scope = std::move(inner_scope);
    }

    std::cout << outer_scope << std::endl;

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

在我尝试打印时,outer_scope仍然有效吗?

c++ move-semantics c++11

7
推荐指数
1
解决办法
1678
查看次数

protobuf 3 单数与可选有何不同

查看proto3参考:

https://developers.google.com/protocol-buffers/docs/proto3#simple

它是这样说的singular

singular: a well-formed message can have zero or one of this field (but not more than one).
Run Code Online (Sandbox Code Playgroud)

我不清楚这与optional. 只是singular一种明确的方式来说明某事optional(现在对于 proto3 来说是隐式的)?或者我还缺少其他什么功能吗?

谢谢。

protocol-buffers

7
推荐指数
1
解决办法
3358
查看次数

如何以编程方式检测文件是否为 Python 脚本

我想为我的项目创建一个 git pre-commit 钩子,该钩子在由潜在提交修改的文件上运行 autopep8。我只想在 Python 文件上运行它,而不是其他 C++ 文件、文本文件等。如何以编程方式检测文件是否是 Python 文件?并非存储库中的所有 Python 文件都具有 .py 扩展名,因此我不能依赖它。

python

7
推荐指数
1
解决办法
127
查看次数

std :: weak_ptr:lock或shared_ptr构造函数?

似乎有两种方法可以临时获取a所指向的资源的所有权weak_ptr:

  1. 使用 lock()
  2. 传递weak_ptrshared_ptr构造函数

这两个都产生一个shared_ptr,nullptr如果weak_ptr是空的并且shared_ptr构造函数抛出异常,则锁返回a .

所以问题是:何时应该使用其中一种?是否有与此相关的一般准则或最佳做法?

c++ smart-pointers weak-ptr c++11

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

为什么std::list有remove和remove_if函数

为什么std::list有remove和remove_if函数?这似乎与同名算法函数重复了行为。如果remove和remove_if有意义,为什么find和find_if不行呢?

c++ algorithm

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