python - Django,为什么我的 jquery url View 重复?

标签 python jquery ajax django

我是 javascript 的新手,刚刚设置了 jquery/ajax 并让它在我的 Django 项目中工作。我还没有修改我的 View 以适应 GET 请求。我的 ajax 函数正在发送以下请求 URL:

http://127.0.0.1:8000/myportfolio/add_transaction/myportfolio/add_transaction

当我希望他们发送时:

http://127.0.0.1:8000/myportfolio/add_transaction/

为什么会这样?

我的 jquery 文件:

$(document).ready(function() {

    // using jQuery
    function getCookie(name) {
        var cookieValue = null;
        if (document.cookie && document.cookie !== '') {
            var cookies = document.cookie.split(';');
            for (var i = 0; i < cookies.length; i++) {
                var cookie = jQuery.trim(cookies[i]);
                // Does this cookie string begin with the name we want?
                if (cookie.substring(0, name.length + 1) === (name + '=')) {
                    cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
                    break;
                }
            }
        }
        return cookieValue;
    }
    var csrftoken = getCookie('csrftoken'); 

    function csrfSafeMethod(method) {
        // these HTTP methods do not require CSRF protection
        return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
    }

    $.ajaxSetup({
        beforeSend: function(xhr, settings) {
            if (!csrfSafeMethod(settings.type) && !this.crossDomain) {
                xhr.setRequestHeader("X-CSRFToken", csrftoken);
            }
        }
    });


    $('#id_buysell').on('change', function(){

            console.log("buysell");

            var $formData = $(this).attr("id_buysell");
            console.log($formData);

            $.ajax({
                method: "GET",
                url: "myportfolio/add_transaction",
                data: $formData,
            });

        });

    $('#id_coin').on('change', function(){

        console.log("coin change")

        var $formData = $(this).attr("id_coin");
        console.log($formData);

        $.ajax({
            method: "GET",
            url: "myportfolio/add_transaction",
            data: $formData,
        });

    });

});

我的看法:

def add_transaction(request):
    print(request.method)
    print("test1")

    form = TransactionForm()
    if request.method == "POST":
        print("test2")
        form = TransactionForm(request.POST)
        if form.is_valid():
            print("test3")
            obj = form.save(commit = False)
            obj.user = request.user
            obj.save()
            return HttpResponseRedirect('/myportfolio/')
        else: 
            print(form.errors)

    return render(request, 'myportfolio/add_transaction.html', {'form': form})

网址.py

from django.urls import path

from . import views

urlpatterns = [
    path('', views.index, name = 'index'),
    path('add_transaction/', views.add_transaction, name = 'add_transaction'),
    path('register/', views.register, name = 'register'),
    path('login/', views.user_login, name='login'),
    path('logout/', views.user_logout, name='logout')]

最佳答案

您需要在路径的开头放置一个 / 以使其相对于域根而不是当前目录:

$.ajax({
  method: "GET",
  url: "/myportfolio/add_transaction",
  data: $formData,
});

关于python - Django,为什么我的 jquery url View 重复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50350354/

相关文章:

list - 如何从列表中选择顺序元素?

python - 是否可以检测重复的图像文件?

python - 使用 gzip 启用 KMZ 输出

javascript - 如何让媒体查询与切换功能添加的样式一起使用

ajax - f :ajax in ui:repeat renders h:outputText but fails to render/update h:inputText

java - 如何在 Java Spring Boot MVC 中使用 Ajax 删除多个项目

python - 如何使用 PyGTK 将列表写入文件属性

javascript - 如何将 Angular 4(点击)事件绑定(bind)到动态创建的 div

javascript - ASP.NET 如何知道请求是否为 AJAX?

javascript - 使 tablesorter 表缩小以适合页面