3

我正在尝试url-names在我的 javascript/jquery 文件中使用 AJAX 请求,并且我找到了几种可以解决此问题的解决方案。我目前正在使用的是以下。

我定义了一个 url 来提供 javascript 文件:

网址.py

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

然后我定义呈现 javascript 文件的视图。

视图.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_fileurl 来获取渲染的 javascript 文件。

.html 文件:

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

现在在任何 javascript 文件中,我都可以url-names通过{% url url-name %}.

问题:

1) 是否有更好/更快的方式url-names在 javascript 文件中使用?我知道已经创建了一些应用程序来实现这一点,但我希望获得每个人(django 专家)对实现这一目标的最佳方式的意见。

2)我们可以在第一次渲染后缓存渲染的javascript文件,以便在每个后续请求中,我们不必再次渲染它们吗?如果是,那么我们该如何去做。

3)在这种方法中,我们从他们的应用程序文件夹中渲染脚本文件。STATIC_ROOT有没有办法从get_javascript_file视图中访问位于其中的静态文件?我只是在考虑这将如何在生产环境中工作。从他们的应用程序文件夹中访问静态文件而不是将它们放入STATIC_URL并从那里访问它们是一种好习惯吗?

笔记

我知道已经有一些关于 SO 的问题可以回答这个问题的某些部分,但我只是想一劳永逸地为未来的 django 学习者了解这一点。最好的使用方法url-namesjavascript什么script

4

1 回答 1

2

我不喜欢通过视图渲染运行外部 js。特别是如果您使用 django-compressor 之类的东西来压缩和缓存 js 文件。

我更喜欢在包含外部文件之前将变量包含在脚本标记中。

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

该解决方案也并不总是理想的,但我对其他解决方案持开放态度。

于 2013-03-05T01:31:29.683 回答