我是django的新手,我试图在不进行重定向的情况下更新视图中的字段,我试图在调用视图函数时返回JSON文件,但是我似乎找不到解决方法因此无需重定向到某些网址。
我认为这可能与我的urls.py有关:... path('#',views.myFunction,name ='myFunctionName')。
我把djangoproject.com中出现的django教程搞糊涂了
<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'),
答案 0 :(得分:0)
因此,最有可能发生的是Django URLS正在找到索引页面并重定向到该视图。 #磅或数字符号通常表示页面中的重定向。
答案 1 :(得分:0)
首先,您的代码中没有AJAX。 <a href="{% url 'polls:myfunction' %}">doFunction</a>
将重定向到整个新页面。
其次,您到urls.py中的myfunction
的路径不正确。
这是您可以做什么的一个例子。我也建议您阅读this。我使用JQuery,但随时可以适应您的喜好。
urls.py:
#...
path('ajax/domyfunction/', views.myfunction, name='myfunction')
]
html模板:
<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>