8

我需要在 Django 项目中设置自定义响应标头。

以下是来自 fact/urls.py 的代码:

d = {
    'app_name': 'facts',
    'model_name': 'Fact'
}

urlpatterns = patterns('',
    (r'^$', 'facts.main', d),
)

这种方法显示来自模型的数据,但我不确定是否有办法在这里设置自定义标题?

我还尝试了另一种方法 - 我使用以下功能创建了 fact/views.py:

def fact(request):

    response = render_to_response('facts.html', 
                                  {'app_name': 'facts',
                                   'model_name': 'Fact'}, 
                                  context_instance=RequestContext(request))

    response['TestCustomHeader'] = 'test'

    return response

并更改了 urls.py 中的代码:

(r'^$', facts.views.fact),

此方法设置自定义标头,但不显示模型中的数据。

有什么帮助吗?

4

1 回答 1

7

当您将 dict 传递给views.mainin 时urls.py,该函数会def main()处理{"model_name": "Fact"}. 可能有一些代码,如:

model = get_model(kwargs["model_name"])
return model.objects.all()

当您将“model_name”传递给render_to_response时,dict 将作为上下文传递给模板。如果您包含在您的模板{{model_name}}中,该页面应该呈现Fact


在基于类的视图中设置自定义标题,在类中定义如下函数:

def get(self, request):
    response = HttpResponse()
    response["TestCustomHeader"] = "test"

    return response
    

或者在函数视图中:

def main(request):
    response = HttpResponse()
    response["TestCustomHeader"] = "test"

    [ Some code to fetch model data ]

    return response
于 2014-01-16T15:33:51.017 回答