代码之家  ›  专栏  ›  技术社区  ›  manosim

Django,特定的url不加载样式表和js

  •  0
  • manosim  · 技术社区  · 12 年前

    在djano应用程序urls.py中,我得到了2个URL。两者都扩展了“base.html”。但当我转到url时,其中一个不会加载.css、.js文件等。有什么想法吗?Urls.py如下:

    from django.conf.urls import patterns, url
    urlpatterns = patterns('',
        (r'^password/reset/$', 'django.contrib.auth.views.password_reset',
                {'post_reset_redirect' : '/membership/password/reset/done/'}),
        (r'^register/$', 'membership.views.register_user'),
    )
    

    我复制并粘贴了“extends'base.html”等,以避免任何拼写错误。

    使现代化 我忘了告诉你,当页面加载时,在“register”页面的源代码中,似乎缺少“static/”。即使在其他页面中,例如“/成员资格/仪表板/”,它也能正常工作。

    2 回复  |  直到 12 年前
        1
  •  2
  •   Community Mohan Dere    9 年前

    这些服务来自两个不同的“目录”,即。 yourdomain.com/password/reset/ yourdomain.com/register/ 。您很可能使用相对URL(这取决于提供它们的目录)来引用资源,因此如果您在base.html中硬编码URL,那么至少其中一个URL是错误的。。。

    Django有一种方法来引用模板中静态提供的资源,如html、javascript等,这些资源将使用正确的相对URL,具体取决于您在 urls.py .

    例如,取自 https://docs.djangoproject.com/en/dev/howto/static-files/

    {% load staticfiles %}
    <img src="{% static "my_app/myexample.jpg" %}" alt="My image"/>
    

    使现代化

    看起来您依赖于从 settings.py 默认情况下,模板无权访问的URL。要获得访问权限,您需要从视图向模板传递上下文(例如,请参见 this question ).

    django.contrib.auth.views.password_reset 可能这样做了,所以参考文件起作用,但您自己的观点(即。 membership.views.register_user )可能不会。

    通过 STATIC_URL 在上下文中,尝试 views.py :

    def register_user(request, template="my_template.html"):
        context = { 'STATIC_URL' : settings.STATIC_URL }
        return render_to_response(template, context)
    

    然而,像这样构建URL并不是最好的方式——如果可能的话,最好改用Django认可的方式。。。

        2
  •  0
  •   Joel Burton    12 年前

    (我不认为你会根据你的问题得到答案。这个问题不太可能与你的urls.py有关。它更可能出现在你正在使用的模板中。你也可以澄清你所说的“不加载.css,.js”是什么意思。你是指呈现的HTML中没有和标记吗?或者是这样,但它们指向了错误的东西,或者不起作用?)