gpt4 book ai didi

python - 在 Ajax 中使用 django url 返回一个字符串

转载 作者:行者123 更新时间:2023-11-30 23:02:52 25 4
gpt4 key购买 nike

当在 AJAX get 调用中使用 {% url 'query' %} 时,返回一个字符串,但当我输入静态 url 时,它可以正常工作。

我在已安装的应用程序中使用 Django-Filters 和 Django-rest-framework。

url.py

from django.conf.urls import url

from . import views

urlpatterns = [
url(r'^query/$', 'my_app.views.app_function', name='query')
]

app.js

$(document).ready(function(){

// LOAD COOKIE
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 callServer () {
$.ajax({
type: 'GET',
url: "{% url 'query' %}",
success: function (json) {
console.log(json)

},
error: function(x, t, m) {
if(t==="timeout") {
alert("got timeout");
} else {
alert(t);
}
},
headers: {
'X-CSRFToken': csrftoken
}
});
}

$("#query").click(function () {
$('#sub').submit(function (e) {
e.preventDefault();
});
return callServer();
});



});

View .py

class AppFilter(django_filters.FilterSet):
class Meta:
model = Post
fields = ['first', 'second']


@api_view(['GET'])
def app_function(request):
qs = Post.objects.all()
f = AppFilter(request.GET, queryset=qs)
serializer = PostSerializer(f, many=True)
return Response(serializer.data)

表单.py

class QueryForm(forms.Form):
first = forms.TypedChoiceField(
widget=forms.Select,
choices=choice_dict1
)
second = forms.TypedChoiceField(
widget=forms.Select,
choices=choice_dict2
)

在我烧掉这个地方之前有什么帮助吗?

最佳答案

Django 将无法解析 JS 文件中的 {% url 'query' %} ,因为那是客户端的内容。反向 url 在 html 文件渲染时解析。

你可以做的是,从 html 文件中将该 url 作为该 JS 模块的 init() 函数传递:

<!-- In your Template file -->
<script>
$(function(){
app.init("{% url 'query' %}");
});
</script>

并从js文件中导出app模块。将该 url 设置为变量,并在 ajax 调用中使用它。

关于python - 在 Ajax 中使用 django url 返回一个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34298004/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com