Неправильное перенаправление url в django - PullRequest
0 голосов
/ 17 июня 2020

Обновленный вопрос:

Неправильное перенаправление URL-адреса в Django. У меня есть это:

views.py.

def graph(request):
    if request.method == 'POST' and 'text' in request.POST:
        print("testing....")
        print(request.POST.get('text'))
        name = request.POST.get('text')
        context = {
            'name': name,
        }
        print(context)
        return render(request, 'StockPrediction/chart.html', context)
    else:
        return render(request, 'StockPrediction/greet.html')

urls.py

urlpatterns = [
    path("", views.greet, name='greet'),
    path("index/", views.index, name='Stock Prediction'),
    path("prediction/", views.prediction, name='Prediction'),
    path("view/", views.graph, name='Graph'),
]

в целях тестирования, я использую оператор печати. Так что проблем нет, пока не напечатаешь print(context), но проблема в том, что он переходит к 'StockPrediction/greet.html', а не к 'StockPrediction/chart.html'. который мне нужен.

Ответы [ 2 ]

2 голосов
/ 17 июня 2020

Вы должны использовать ajax request:

$.ajax({
    type: 'POST',
    url: 'YOUR VIEW URL',
    data: {'row': row, 'text': text},
    success: function (data){
        DO SOMETHING HERE if VIEW has no errors
    })

в вашем представлении:

row = request.POST.get('row')    
text = request.POST.get('text')

, а также вам следует позаботиться о crsf-token. Документация

0 голосов
/ 17 июня 2020

ваш can POST it GET it или поместите его как переменную в свой url. вот пост-подход:

с использованием jquery:

$.ajax({
    url : "/URL/to/view", 
    type : "POST", // or GET depends on you
    data : { text: $text },
    async: false,
    // handle a successful response
    success : function(json) {
         // some code to do with response
         }
    },

    // handle a non-successful response
    error : function(xhr,errmsg,err) {
        $('#results').html("<div class='alert-box alert radius' data-alert>Oops! We have encountered an error: "+errmsg+
            " <a href='#' class='close'>&times;</a></div>"); // add the error to the dom
        console.log(xhr.status + ": " + xhr.responseText); // provide a bit more info about the error to the console
    }
});

На ваш взгляд, вы можете получить данные как json и вернуть josn как ответ

import json
def my_view(request):
    if request.method == 'POST':
         response_data = {}   // to return something as json response
         text = request.POST['text']
         ...
         return HttpResponse(
         json.dumps(response_data),
         content_type="application/json"
    else:
        return HttpResponse(
            json.dumps({"nothing to see": "this isn't happening"}),
            content_type="application/json"
        )
...