Возвращать JSON-ответ без перенаправления - PullRequest
0 голосов
/ 04 февраля 2019

Я новичок в django, и я пытаюсь обновить поля в моем представлении без перенаправления, я пытаюсь вернуть файл JSON, когда вызывается функция представления, но я не могу найти, как это сделатьпоэтому без перенаправления на какой-либо URL.

Я думаю, что это может быть связано с моим urls.py: ... path ('#', views.myFunction, name = 'myFunctionName').

Я возиться с учебником по django, который появляется на djangoproject.com

<h1>{{ question.question_text }}</h1>
<ul>
{% for choice in question.choice_set.all %}
<li>{{ choice.choice_text }} -- {{ choice.votes }} vote{{ choice.votes|pluralize }}</li
{% endfor %}
</ul>
<a href="{% url 'polls:detail' question.id %}">Vote again?</a>
<a href="{% url 'polls:myfunction' %}">doFunction</a>

Моя функция просмотра выглядит следующим образом:

def myfunction(request):
    return JsonResponse({'ayy':'lmao'})

и urls.py:

from django.urls import path


from . import views

app_name = 'polls'
urlpatterns = [
path('', views.IndexView.as_view(), name='index'),
path('<int:pk>/', views.DetailView.as_view(), name='detail'),
path('<int:pk>/results/', views.ResultsView.as_view(), name='results'),
path('<int:question_id>/vote/', views.vote, name='vote'),
path(r'#', views.myfunction, name='myfunction'),
path('form', views.FormView.as_view(), name='form'),

Ответы [ 2 ]

0 голосов
/ 05 февраля 2019

Во-первых, в вашем коде нет AJAX.<a href="{% url 'polls:myfunction' %}">doFunction</a> будет перенаправлять на всю новую страницу.Во-вторых, ваш путь к myfunction в urls.py неверен.

Вот пример того, что вы можете сделать.Я также предлагаю вам прочитать это .Я использую JQuery, но не стесняйтесь приспосабливаться к тому, что вы предпочитаете.

urls.py:

    #...
    path('ajax/domyfunction/', views.myfunction, name='myfunction')
]

html template:

<h1>{{ question.question_text }}</h1>
<ul>
{% for choice in question.choice_set.all %}
<li>{{ choice.choice_text }} -- {{ choice.votes }} vote{{ choice.votes|pluralize}}</li
{% endfor %}
</ul>
<a href="{% url 'polls:detail' question.id %}">Vote again?</a>
<button id="b_function">doFunction</button>
<script>
$("#b_function").click(function () {
    $.ajax({
        url: '{% url "polls:myfunction" %}',
        dataType: 'json',
        success: function (data) {
            alert(data.ayy);
        }
    });
});
</script>
0 голосов
/ 04 февраля 2019

Так что, скорее всего, здесь происходит то, что Django URLS находит страницу индекса и перенаправляет на это представление.Символ # фунта или цифры обычно указывает на перенаправление на странице.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...