我开始使用一个简单的网络应用程序,我试图调用python函数通过ajax调用呈现一个单独的视图。我想点击try按钮并渲染一个不同的html模板。现在它只显示来自我的ajax的错误消息,但我不知道什么可能破坏它。我只是需要有人指出我正确的方向..一些起点将非常感激。在此先感谢:)
我的项目urls.py看起来像这样
from django.conf.urls import include, url, patterns
from django.conf.urls.static import static
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
from SudokuProject import settings
urlpatterns = patterns('',
url(r'', include('SudokuApp.urls', namespace="Sudoku"))) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
urlpatterns += staticfiles_urlpatterns()
我的应用urls.py
from django.conf.urls import include, url
from . import views
urlpatterns = [
url(r'Home/', views.sudoku_home, name="home"),
url(r'Solve/', views.sudoku_solve, name="solve")
]
Views.py
from django.shortcuts import render
from django_ajax.decorators import ajax
def sudoku_home(request):
return render(request, 'SudokuHome.html')
@ajax
def sudoku_solve(request):
return render(request, 'SudokuSolve.html')
$(document).ready(function(){
$('#try').click(function() {
alert('hi');
$.ajax({
url:"{% url 'Sudoku:solve' %}",
type:"POST",
success: function (data) {
alert('woohoo success');
},
error: function(data) {
alert("something's wrong");
}
})
});
});

<body>
Hello Welcome to Sudoku
<button id="try">try me</button>
</body>
<script type="text/javascript" src="{% static 'js/jquery.js' %}" ></script>
&#13;
答案 0 :(得分:0)
我相信你正在使用django-ajax库,而你已经安装了它。
根据django-ajax documentation,您必须返回字典:
@ajax def my_view(request): c = 2 + 3 return {'result': c} # The result is send to the browser in the following way (JSON format) {"status": 200, "statusText": "OK", "content": {"result": 5}}
所以你的函数应该返回这样的东西:
@ajax
def sudoku_solve(request):
return { "message": "hello world!" }
您可以在前端使用此数据:
...
success: function (data) {
alert(data.content.message);
},
...
答案 1 :(得分:0)
您需要渲染模板,然后将其作为字符串发回,如下所示:
Puma
在您的客户端:
from django.template.loader import render_to_string
def sodoku_solve(request):
html = render_to_string('SodukuSolve.html')
return {'html': html}