2011-05-11 5 views
2

장고 또는 파이썬 질문인지 100 % 확신 할 수는 없지만 장고와 관련이 있다고 생각합니다.매개 변수 이름이 지정된 Django render_to_response()

저는 장고 세계에 처음 왔기 때문에 함수 호출을 할 때 매개 변수 이름을 명시 적으로 지정하는 습관을 갖기 위해 노력하고 있습니다. "(이) 예상치 못한 키워드 인수 '템플릿'을 가지고 render_to_string"

render_to_response(template='lend_borrow/MyAccount_mod.html', 
        dictionary={'user_form': user_form, 'profile_form': profile_form, 'profile': profile_obj}, 
        context_instance=RequestContext(request)) 

하지만 그와

, 나는 오류를 가지고 :에는 render_to_response()의 경우

는, 나는 다음과 같은 일을 할 것입니다. 그에는 render_to_response (위해서는) 내보기 기능에서 작업에

, 내가로 변경했다

render_to_response('lend_borrow/MyAccount_mod.html', 
        {'user_form': user_form, 'profile_form': profile_form, 'profile': profile_obj}, 
        RequestContext(request)) 

또는

render_to_response('lend_borrow/MyAccount_mod.html', 
        {'user_form': user_form, 'profile_form': profile_form, 'profile': profile_obj}, 
        context_instance=RequestContext(request)) 

질문 : 왜 호출하는 첫 번째 방법입니다 render_to_response() 오류가 발생 했습니까?

답변

3

render_to_responseHttpResponse 래퍼입니다. 그러나 HttpResponse은 템플릿 이름이 아닌 렌더링 된 내용을 사용합니다. 따라서 render_to_responserender_to_string을 먼저 호출하고 render_to_string의 매개 변수는 template_name이 아니며template이됩니다.

그러나 접두사 매개 변수 이름은 반드시 "우수 사례"는 아닙니다. 좋은 관례는 규범을 따르는 것이며 규약은 context_instance을 제외하고 render_to_response에 매개 변수 이름을 사용하지 않는 것입니다.

+0

예, "template_name"이 작동합니다! 감사. render_to_response (템플릿 [, 사전] [, context_instance] [, mimetype]) 위의 내용은 장고의 공식 문서에서 render_to_response의 서명입니다. 나는 "template"대신에 "template_name"을 읽어야한다고 생각한다. – tamakisquare

+0

접두어 붙이는 매개 변수 이름에 대한 의견에 동의한다. 매개 변수를 값과 일치시키는 암시 적 인덱스에 의존 할 때 더 신중한 경향이 있습니다. 대부분의 경우 매개 변수 이름의 접두어를 붙이면 코드를 더 읽기 쉽고 이해하기 쉽도록 만듭니다. 그러나 당신과 마찬가지로, 국제 대회가 시작될 때, 나는이 원칙을 기꺼이 풀고 싶어합니다. – tamakisquare

2

매개 변수 이름은 template_name이며 template이 아닙니다.

관련 문제