我有一个填充json对象的视图,然后,在同一视图的末尾,我将呈现一个html页面,但还返回最终的json。
这可能无关紧要,但json可能是这样的:
{
"embedToken": "dasfgjasdàgjasdàgasdàgèe-AveryLongToken",
"embedUrl": "https://app.powerbi.com/let's_go_to_the_lake",
"reportId": "e615-sfash-9746"
}
我无法修复的行(整天使用所有替代方法尝试)如下:
return render(request, "home.html", jsn)
我的url.py很简单,如下所示:
urlpatterns = [
path('', HomePageView, name='home'),
]
我目前收到以下错误:
context must be a dict rather than str.
但是我在途中遇到了各种错误,但未成功达到预期的结果(呈现html并同时返回json)。所以我的疑问是,我在基本原则上采用了错误的方法,我应该改变道路吗?
我想尝试将json转换为字典,然后也许将其转换回javascript中的json
我还试图通过将html呈现为django视图并通过javascript ajax请求执行函数调用来拆分请求,如下所示:
function handler1(){
// there are many other methods like $.get $.getJSON
$.ajax({
type: 'GET',
dataType: 'json',
url: "http://piedpiper.com/api/callers"
}).then(function(result) {
// do something with the result
});
}
但是我最终了解到,我必须以这种方式创建URL api /调用程序,由于用户会话的原因,我将无法使用该URL api /调用程序,每个人都可以使用。只有登录的用户才能看到json数据
答案 0 :(得分:0)
您需要在render上添加适当的参数。 Here is the docs for render function in Django
这是视图的示例代码
def post_detail(request, slug=None):
instance = get_object_or_404(Post, slug=slug)
share_string = quote_plus(instance.content)
context = {
"title": instance.title,
"instance": instance,
"share_string": share_string,
}
return render(request, "post_detail.html", context)