Джанго: принять вызов AJAX и дать ответ?

-2

Здесь мой код javascript:

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');

    //Ajax call
    function csrfSafeMethod(method) {
    // these HTTP methods do not require CSRF protection
        return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
        }
        $.ajaxSetup({
            crossDomain: false, // obviates need for sameOrigin test
            beforeSend: function(xhr, settings) {
                if (!csrfSafeMethod(settings.type)) {
                    xhr.setRequestHeader("X-CSRFToken", csrftoken);
                }
            }
    });

    $(".color_wheel").click(function() {
    $.ajax({
        url:'/',
        type: "POST",
        data: {num : level},
    });});

И вот мой файл представлений:

from django.shortcuts import render
from .models import Joke

# Create your views here.
def home_page(request):
    return render(request, 'home.html')

def joke_page(request):
    if request.POST:
        num = request.POST['num']     
        return render(request, 'joke.html', {'joke': Joke.find_joke(num)})

Как вы можете видеть, я хочу, чтобы Django принял вызов AJAX, взял заданный номер (num) и использовал его для отображения новой страницы. Дело в том, что это не работает... Может быть, я делаю что-то не так, может быть, все это неправильно... Пожалуйста, помогите, если вы знаете, как это сделать. Спасибо!

Редактировать:

urls.py

from django.conf.urls import url

from jokes import views

urlpatterns = [
    url(r'^$', views.home_page, name='home_page'),
    url(r'^(?P<joke_id>[0-9]+)/$', views.joke_page, name='joke_page'),
]
  • 0
    ajax не может отобразить новый HTML, вы можете принять ответ от сервера.
  • 0
    Кажется, у вас есть только половина кода, который вам нужен. Где вызывается функция Ajax success для визуализации полученных данных? Где находятся URL? Является ли / сопоставлен с home_page или joke_page?
Показать ещё 4 комментария
Теги:
call

1 ответ

0

Я думаю, что это можно сделать просто с помощью запроса GET

$(".color_wheel").click(function() {
    window.location.href = "/"+devel,
})

Ввиду

def joke_page(request, joke_id):
    return render(request, 'joke.html', {'joke': Joke.find_joke(joke_id)})
  • 0
    Кажется, это просто перезагружает страницу, но, возможно, я сделал какую-то ошибку в другом месте. Дай мне проверить...
  • 0
    можешь поставить свой urls.py?
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню