Django,特别是url不加载样式表和js

时间:2014-03-18 18:41:54

标签: python django django-urls extends base

在djano应用程序中,在urls.py中,我有2个网址。两者都扩展'base.html'。但是,当我去网址时,其中一个不加载.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 /'。即使在其他页面示例'/ membership / dashboard /'中它也能正常工作。

2 个答案:

答案 0 :(得分:2)

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

Django可以在模板中引用静态服务的资源,例如html,javascript等,这些资源将使用正确的相对URL,具体取决于您在urls.py中配置的内容。

e.g。取自https://docs.djangoproject.com/en/dev/howto/static-files/

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

<强>更新

您似乎依赖于访问模板中settings.py的值来构建您的网址,默认情况下,模板无权访问。要获得访问权限,您需要从视图中向模板传递上下文(请参阅示例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认可的方式......

答案 1 :(得分:0)

(我不认为你会根据你的问题得到答案。问题不太可能与你的urls.py有关。它更有可能在你正在使用的模板。你也可以澄清你的意思&#34;没有加载.css,.js&#34;。你的意思是渲染的HTML没有它中的标签和标签?或它确实如此,但它们指向错误的东西或以其他方式不起作用?)