2014-01-16 9 views
2

Мне нужно настроить пользовательские заголовки ответов в проекте Django.Пользовательские заголовки ответов Django

Вот код из фактов/urls.py:

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

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

Этот подход показывает данные модели, но I'am не уверен, если есть способ, чтобы установить пользовательские заголовки здесь?

Также я попробовал другой подход - я создал факты/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), 

Этот подход устанавливает пользовательские заголовки, но Безразлично Показывать данные из модели.

Любая помощь?

+0

вы не ясны в вашем вопросе, поскольку я не вижу никаких манипуляций с заголовками в отношении вашего ответа ... Django охватывает заголовки в документации: https://docs.djangoproject.com/en/1.6/ref/request-response/#django.http.HttpRequest. META – petkostas

+0

Я добавляю собственный заголовок (TestCustomHeader) во втором подходе и вижу его в firebug. Но в этом случае модель не загружается. – Phantom

+0

Почему вы должны видеть данные модели? вы фактически не собираете данные какой-либо модели ... Вы должны проверить документацию Django для дальнейшего понимания: https://docs.djangoproject.com/en/1.6/topics/http/views/ – petkostas

ответ

2

Когда вы передаете dict до views.main в urls.py, функция def main() имеет дело с {"model_name": "Fact"}. Возможно, есть какой-то код, как:

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

Когда вы проходите «MODEL_NAME» в render_to_response, то ДИКТ передается в шаблон в качестве контекста. Если вы включите в свой шаблон {{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 
Смежные вопросы