在 Rails 中,我可以使用 respond_to 来定义控制器如何根据请求格式响应。
在路线.rb
map.connect '/profile/:action.:format', :controller => "profile_controller"
在 profile_controller.rb
def profile
@profile = ...
respond_to do |format|
format.html { }
format.json { }
end
end
目前,在 Django 中,我必须使用两个 url 和两个操作:一个返回 html,一个返回 json。
网址.py:
urlpatterns = [
url(r'^profile_html', views.profile_html),
url(r'^profile_json', views.profile_json),
]
视图.py
def profile_html (request):
#some logic calculations
return render(request, 'profile.html', {'data': profile})
def profile_json(request):
#some logic calculations
serializer = ProfileSerializer(profile)
return Response(serializer.data)
使用这种方法,逻辑代码变得重复。当然,我可以定义一种方法来进行逻辑计算,但代码很冗长。
无论如何,在 Django 中,我可以将它们组合在一起吗?