Django自定义响应头

时间:2014-01-16 15:09:34

标签: python django custom-headers

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

以下是来自facts / 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),

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

任何帮助?

1 个答案:

答案 0 :(得分:4)

当您将字典传递给views.main中的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()
    reponse["TestCustomHeader"] = "test"

    [ Some code to fetch model data ]

    return response