我可以通过我的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) 本声明:
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 但以其他方式改变而不是恒定的?
这是一个最小的神箭:
StoryTeller 的回答是理解这一点的关键。我已经接受了他的回答,但我会在这里进行扩展,以防对其他人试图理解这一点有所帮助。与 const 交互时,我习惯于将 const 视为应用于其左侧的项目。因此:
char a[] = "hello";
char * …Run Code Online (Sandbox Code Playgroud) 我最近开始使用 nvim ( neovim )。它通常工作得很好,但是当我运行 vimdiff 时,我注意到我遇到了运行常规 vim 时遇到的启动错误。我已经修复了这些问题,以便 vim 和 nvim 在我的系统上运行时不会出现错误,因此 vimdiff 现在可以正常工作。但这让我想知道:vimdiff 是否有 neovim 版本?或者我应该同时维护 vim 和 neovim,以便常规 vim 可以很好地用于 vimdiff?
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)
我注意到如果出现以下情况,可以很方便
candy.py和test_candy.py)我可以使用unittest模块运行python 来执行以下操作,而无需在我的环境中明确设置任何内容:
~/candy).test_candy有py作为扩展名.candy和test_candy.py不共享一个共同的根(我的主目录除外).如果通过简单的调用python -m unittest无法做到这一点,那么实现这一目标的最简单方法是什么?
我正在尝试按照此处提供的说明松散地在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) 我知道这是一个非常基本的,甚至可能是令人尴尬的问题,但我无法理解这一点.如果我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仍然有效吗?
查看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 来说是隐式的)?或者我还缺少其他什么功能吗?
谢谢。
我想为我的项目创建一个 git pre-commit 钩子,该钩子在由潜在提交修改的文件上运行 autopep8。我只想在 Python 文件上运行它,而不是其他 C++ 文件、文本文件等。如何以编程方式检测文件是否是 Python 文件?并非存储库中的所有 Python 文件都具有 .py 扩展名,因此我不能依赖它。
似乎有两种方法可以临时获取a所指向的资源的所有权weak_ptr:
lock()weak_ptr给shared_ptr构造函数这两个都产生一个shared_ptr,nullptr如果weak_ptr是空的并且shared_ptr构造函数抛出异常,则锁返回a .
所以问题是:何时应该使用其中一种?是否有与此相关的一般准则或最佳做法?
为什么std::list有remove和remove_if函数?这似乎与同名算法函数重复了行为。如果remove和remove_if有意义,为什么find和find_if不行呢?