Ajax 不允许使用Django奇怪的方法

Ajax 不允许使用Django奇怪的方法,ajax,django,jquery,django-views,django-urls,Ajax,Django,Jquery,Django Views,Django Urls,我正在使用Django编写一个项目,当我请求一个url时,我得到了一个奇怪的不允许的方法(405)。 我知道错误是关于什么的,但以下是我的实现和详细信息: url.py url(r'^join/', csrf_protect(UserSignUp.as_view()), name='sgn_up'), views.py class UserSignUp(View): def post(self, request): resp_data


我正在使用Django编写一个项目,当我请求一个url时,我得到了一个奇怪的不允许的方法(405)。 我知道错误是关于什么的,但以下是我的实现和详细信息:

url.py

url(r'^join/',
        csrf_protect(UserSignUp.as_view()),
        name='sgn_up'),
views.py

class UserSignUp(View):

    def post(self, request):
        resp_data = {}
        try:
            print 'sign up================================================'
            x = MyUser.objects.get(email=request.POST['email'])
            resp_data['message'] = 'signed up before'
            return HttpResponse(json.dumps(resp_data), content_type="application/json")

        except MyUser.DoesNotExist:
            user = MyUser(email=request.POST['email'],
                          password=request.POST['password'],
                          first_name=request.POST['firstName'],
                          last_name=request.POST['lastName']
                          )
            user.save()
            #print 'errorize'
            user.set_password(request.POST['password'])
            user.save()
            resp_data[
                'message'] = 'please refer to your email for complete registrations'
            return HttpResponse(json.dumps(resp_data), content_type="application/json")
HTML/JS

function csrfSafeMethod(method) {
        // these HTTP methods do not require CSRF protection
        return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
    }
    var csrftoken = $('input[name="csrfmiddlewaretoken"]').prop('value');
    function sameOrigin(url) {
        var host = document.location.host; // host + port
        var protocol = document.location.protocol;
        var sr_origin = '//' + host;
        var origin = protocol + sr_origin;
        // Allow absolute or scheme relative URLs to same origin
        return (url == origin || url.slice(0, origin.length + 1) == origin + '/') ||
            (url == sr_origin || url.slice(0, sr_origin.length + 1) == sr_origin + '/') ||
            // or any other URL that isn't scheme relative or absolute i.e relative.
            !(/^(\/\/|http:|https:).*/.test(url));
    }
    $.ajaxSetup({
        beforeSend: function(xhr, settings) {
            if (!csrfSafeMethod(settings.type) && sameOrigin(settings.url)) {
                xhr.setRequestHeader("X-CSRFToken", csrftoken);
            }
        }
    });
    function ajaxSignIn(){
        $.ajax({
            url:"{% url 'sgn_in' %}",
            type: "POST",
            data: $('#sgn-in-form').serialize(),
            dataType : "json",
            success: function(json){location.reload();},
            error: function(xhr, status) {}
        });
    }
    function ajaxSignUp(){
        $.ajax({
            url:"{% url 'sgn_up' %}",
            type: "POST",
            data: $('#sgn-up-form').serialize(),
            dataType : "json",
            success: function(json){location.reload();},
            error: function(xhr, status) {}
        });
    }
现在我发送了一个ajax请求(我已经包括了csrftoken)和post方法,但是我得到了一个405
我还有其他带有CSRFtoken的ajax post请求,但它们也可以工作(例如登录)

最有趣的是,当我使用Chrome时,它会给出错误,用户数据也会保存在数据库中!!!(这意味着model post方法有效!!!)但在使用firefox时,它只会给出错误
有没有人遇到过这样的问题?我搜索了很多,但没有找到任何有用的

谢谢

在您的def帖子中,您还必须包含上下文

    self.object = self.get_object()
    context = self.get_context_data(object=self.object)
    return self.render_to_response(context)`

你绝对确定你在发送POST请求吗?是的,绝对确定。我已经更新了我的问题以查看html/js。更重要的是:我的ajaxSignIn工作得很好,但是注册挂断了,更愚蠢的是:从不同浏览器的请求中看到不同的功能!!!