2013-11-22 2 views
0

나는 그것을 찾을 수 없다. 그래서 나는 누군가 나를 도와 줄 수 있기를 바란다. 나는 장고 (1.5)에서django context_processor 템플릿에서 이해하지 못함

TEMPLATE_CONTEXT_PROCESSORS = ("django.contrib.auth.context_processors.auth") 

을 사용하는 옵션을 발견했다. 하지만 지금은 내가 그것을 어떻게 사용해야하는지 명확하지 않습니다. 내보기를 순간 :

def user_characters(request, user_id): 
    characters = Character.objects.filter(user=user_id) 
    user = User.objects.get(id=user_id) 

    return render_to_response('characters.html', 
        {'characters': characters, "user": user}, 
        context_instance=RequestContext(request)) 
난 여전히 예를 들어 Requestcontect

로 다양하게 추가를 보내지 않고이 내 템플릿의 user_object을 사용하여 활성화 된 난을 내보기에 요청을 넣어, 또는 할 수 있어야

내 템플릿 :

{% extends "base.html" %} 
{% block mainframe %} 

{% if characters|length < 3 %} 
    <p><a href="https://stackoverflow.com/users/{{ user.id }}/create/">New Character(WN)</a></p> 
{% endif %} 

그리고 나머지는 내보기입니다.

거의 모든보기에서 나는 user_object를 보내고 싶습니다.

누군가가 어떻게 작동하는지 예를 들어 주시겠습니까? 종류와

당신은 당신이 장고 sessions- 및 인증 프레임 워크를 사용하는 경우가 늘 어쨌든 그것을 필요로 URL에 사용자 ID를 노출하지 않아야 한스

+0

하려면'.auth' 상황에 맞는 프로세서는 기본적으로 활성화되어, 당신은 아무것도를 추가 할 필요가 없습니다. 'RequestContext()'를 사용하면'{{user.id}} '로 사용할 수있는 모든 템플릿에서 컨텍스트 변수'user'를 사용할 수 있습니다. – Rohan

+0

감사합니다. 사용자가 유효한지 여부를 (템플릿에서) 확인하는 방법에 대한 예제도 제공 할 수 있습니까? {%면 user.auth %}는 작동하지 않는 것 같습니다. –

+0

사용자 이름이 없으므로 {% if user.username %} 사용할 수 있습니다. –

답변

2

django.contrib.auth.context_processors.auth 컨텍스트 프로세서가 기본적으로 사용 가능하므로 아무 것도 추가 할 필요가 없습니다. RequestContext()을 사용하면 컨텍스트 변수 user을 사용할 수있는 모든 템플릿에서 사용할 수 있습니다. ID를 얻으려면 {{userd.id}}.

는, 사용자가 인증되지 않았거나 확인

{% if user.is_authenticated %} 
    {# handle authenticated user #} 
{%else%} 
    {# handle anonymous non-authenticated users #} 
{%endif%} 
+0

정확히 slookign이 무엇인지, 감사합니다. :) –

0

을 간주한다. 서버 측보기에서 request.user을 통해 로그인 한 사용자를 언제든지 확인할 수 있습니다. 컨텍스트 프로세서를 사용하면 user.desiredattribute으로 사용자에게 액세스 할 수 있어야하지만 만들려고하는 URL에는 필요하지 않습니다.

0

이의 문서는 나에게 매우 분명한 것 : 당신이 작동하는 상황에 맞는 프로세서를 원하는 경우 https://docs.djangoproject.com/en/dev/ref/templates/api/#django.template.RequestContext

, 당신이 RequestContext 인스턴스를 사용하고 있는지 확인해야합니다. 당신이 표시하거나 (보다 편리하게, 내 생각에) 여기에 설명 된대로 render 바로 가기를 사용하는 대신 render_to_response에 의해 같이 명시 적으로 귀하의 의견에를 작성하여 해당 작업을 수행 할 수 있습니다 장소에 django.contrib.auth.context_processors.auth 상황에 맞는 프로세서와 https://docs.djangoproject.com/en/dev/topics/http/shortcuts/#render

, 사용자는 컨텍스트 변수 user에서 항상 사용할 수 있습니다. 최소한 RequestContext 인스턴스로 템플릿을 렌더링한다고 가정합니다.

제어 된 정보가 있으면 사용자를 결정하기 위해 URL에서 가져온 변수를 신뢰해서는 안됩니다. 표시 한 시스템을 사용하면 누구나 URL을 편집하여 모든 사람의 데이터를 볼 수 있습니다. 완전히 안전하지 않은 응용 프로그램의 경우에는 문제가되지 않지만 request.user을 보면 훨씬 더 정상입니다.

+0

Heelo, 네, 그 순간을 알고 있습니다. 그래서 ID가 실제로 로그인 한 사용자의 ID인지 확인하는 다른 부분이 있습니다. (New to django) 현재 사용자 변수가 작동하고있어, 아직 사용자가 autenticated인지 확인하기가 어렵다. –

관련 문제