2013-03-04 1 views
1

을 자바 스크립트/jquery 파일에서 AJAX 요청 용으로 사용하려고하는데이 문제를 해결할 수있는 몇 가지 해결책을 찾았습니다. 내가 현재 사용하고있는 것은 다음과 같다. 그럼 난 자바 스크립트 파일을 렌더링하는 뷰를 정의자바 스크립트 파일에서 장고 URL 사용

urls.py

url(r'^js/([\w\.\-]+)/([\w\.\-]+)/$', 'views.get_javascript_file', name='get_javascript_file') 
url(r'^getmoredicus/$', 'load_discussions', name="load-discus"), 

:

나는 자바 스크립트 파일을 제공하는 URL을 정의합니다.

views.py :

def get_javascript_file(request, app_name, js_file): 
''' 
    Used to request and serve rendered javascript/jquery files. 
''' 
return render_to_response("%s/%s.js" % (app_name, js_file), 
          context_instance=RequestContext(request)) 

은 이제 HTML 파일에서, 우리는 렌더링 자바 스크립트 파일을 얻을 수있는 get_javascript_file URL을 사용할 수 있습니다.

HTML 파일 :

<script type="text/javascript" src="{% url get_javascript_file 'myapp' 'jsfile' %}"></script> 

지금 어떤 자바 스크립트 파일에서, 내가 {% url url-name %} 통해 url-names에 액세스 할 수 있습니다.

질문 :

1) 자바 스크립트 파일에 url-names를 사용하는 더 나은/더 빠른 방법이 있나요? 이미이 작업을 수행하기 위해 만들어진 일부 앱이 있음을 알고 있지만이를 달성하기위한 최선의 방법에 대해 모든 사람 (장고 전문가)의 의견을 듣고 싶습니다.

2) 렌더링 된 javascript 파일을 처음 렌더링 한 후 캐시 할 수 있으므로 이후 요청시 다시 렌더링 할 필요가 없습니다. 그렇다면 우리는 어떻게 그렇게 할 수 있습니까?

3)이 방법에서는 해당 apps 폴더에서 스크립트 파일을 렌더링합니다. get_javascript_file보기에서 STATIC_ROOT에있는 정적 파일에 액세스 할 수 있습니까? 프로덕션 환경에서 이것이 어떻게 작동하는지 생각하고 있습니다. 정적 파일을 STATIC_URL에 넣고 거기에서 액세스하는 대신 앱 폴더에서 액세스하는 것이 좋습니다.

참고

내가 그이 질문의 일부 답변을 SO에 대한 몇 가지 질문이 이미 있다는 것을 알고 있지만 난 그냥 한번의 바닥에와 미래의 장고 학습자를위한 모든 얻고 싶었다. 무엇보다도 url-namesjavascript 또는 script에 사용하는 가장 좋은 방법은 무엇입니까?

답변

1

뷰 렌더링을 통해 외부 js를 실행하는 팬이 아닙니다. 특히 django-compress와 같은 것을 사용하여 js 파일을 압축하고 캐시하는 경우.

외부 파일을 포함하기 전에 스크립트 태그에 변수를 포함하는 것을 선호합니다.

<script> 
    my_var = "{{ MY_PROPERTY }}" 
</script> 
<script type="text/javascript" src="{{ STATIC_URL }}js/external_script.js"></script> 

이 솔루션도 항상 이상적은 아니지만 다른 솔루션을 사용할 수 있습니다.

관련 문제