我可以通过我的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) 我正在尝试使用jQuery设置cookie:
$.cookie("testCookie", "hello");
alert($.cookie("testCookie"));
Run Code Online (Sandbox Code Playgroud)
但是当我加载页面时,我收到错误"$ .cookie不是函数".这就是我所知道的:
我已经看过其他几个答案(这里和这里等),对大多数人建议重命名cookie.js文件,该文件.我已将我的cookie文件重命名为"jquery.cookeee.js",但结果是一样的.
关于这里发生了什么的任何想法?
如果它有帮助,我在MVC 4中创建一个Web应用程序.
我正在尝试使用angular.js创建一个POST请求到这个Django视图.
class PostJSON4SlickGrid(View):
"""
REST POST Interface for SlickGrid to update workpackages
"""
def post(self, request, root_id, wp_id, **kwargs):
print "in PostJSON4SlickGrid"
print request.POST
return HttpResponse(status=200)
Run Code Online (Sandbox Code Playgroud)
因此我创建了这个资源.
myModule.factory('gridData', function($resource) {
//define resource class
var root = {{ root.pk }};
return $resource('{% url getJSON4SlickGrid root.pk %}:wpID/', {wpID:'@id'},{
get: {method:'GET', params:{}, isArray:true},
update:{method:'POST'}
});
});
Run Code Online (Sandbox Code Playgroud)
在控制器中调用get方法可以正常工作.该网址被翻译为http://127.0.0.1:8000/pm/rest/tree/1/.
function gridController($scope, gridData){
gridData.get(function(result) {
console.log(result);
$scope.treeData = result;
//broadcast that asynchronous xhr call finished
$scope.$broadcast('mySignal', {fake: 'Hello!'});
});
}
Run Code Online (Sandbox Code Playgroud)
我正面临执行更新/ POST方法的问题. …
我想通过AJAX发送登录数据来验证用户身份,但由于CSRF,这是不可能的.你能告诉我在我的代码中添加什么来让它变得更好吗?
我的JavaScript文件:
$("#login").live("click", function() {
var username = $(".login_username").val();
var password = $(".login_password").val();
$.ajax({
url: "/login",
type: "POST",
data: {
username: username,
password: password
},
cache: false,
success: function(tekst) {
alert(tekst);
}
});
});
Run Code Online (Sandbox Code Playgroud) 我正在构建一个博客系统,允许用户将图像添加到他们的博客中.
当用户添加图片时,图片会自动上传,这发生在博客发布之前,那么我应该如何处理上传的图片,这些图片有点像临时图片,因为如果用户发布博客,这些图片会有此博客的外键,并保存到某个文件夹中,但如果用户丢弃该博客,则应删除这些临时图像.
问题是如何在博客实际发布时获得首次上传的图片?我应该在哪里存储这些临时图像?如何判断用户是否放弃了博客?
我是Django的新手.我的项目名称是rango,我创建了一个名为'/ rango/tagger'的URL,它应该发送一个对象.
在我的java脚本中,我尝试通过向它发送ajax请求来与此路由进行通信,如下所示:
function send()
{
obj = {content:$("#content").val()};
$.post('/rango/tagger',obj,function(data){
console.log(data);
})
}
Run Code Online (Sandbox Code Playgroud)
我在我的模板中添加了{%csrf_token%}.但是,它给我的错误如下:
Forbidden (CSRF token missing or incorrect.): /rango/tagger
[31/Jan/2016 09:43:29] "POST /rango/tagger HTTP/1.1" 403 2274
Run Code Online (Sandbox Code Playgroud)
我在views.py中的函数标记器如下:
def tagger(request):
return render(request,'rango/index.html',RequestContext(request))
Run Code Online (Sandbox Code Playgroud)
我也在我的网址模式中定义了它.我怀疑我的函数标记器返回了一个不正确的值或数据(根据其他SO解决方案从HttpResponse(请求)更改为上面的行).
但是,它似乎对我不起作用.我哪里错了?
我有一个名为“counter”的 javascript 变量,我想用它来更新在 models.py 中实例化的计数器变量。
这是models.py的快照
class Player(BasePlayer):
#track the number of times the user has lost window focus
blur_quantity = models.IntegerField(initial=0)
Run Code Online (Sandbox Code Playgroud)
这是 pages.html 的示例
{% block content %}
<button name="blur_button" value=counter onclick="Warn()" class="btn btn-primary btn-large">Blur Button</button>
{% endblock %}
{% block scripts %}
<script>
var counter = 0;
// Tracks window blurs
$( document ).ready(function() {
function onchange (evt) {
counter++;
console.log(counter);
}
window.onblur = onchange;
});
function Warn() {
alert(counter);
}
</script>
{% endblock %}
Run Code Online (Sandbox Code Playgroud)
现在,每当用户单击按钮时,“计数器”的值都应该存储在某处。如何更新models.py(例如我的Django 数据库)中的blur_quantity 值以反映附加到blur_button …
django ×6
python ×3
ajax ×2
javascript ×2
post ×2
angularjs ×1
asp.net-mvc ×1
cookies ×1
cors ×1
csrf ×1
django-csrf ×1
jquery ×1