【问题标题】:Django, particular url doesn't load stylesheets and jsDjango,特定的 url 不加载样式表和 js
【发布时间】:2014-03-18 18:41:53
【问题描述】:

在 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'),
)

附言。我复制并粘贴了“扩展 'base.html' 等以避免任何拼写错误。

更新 我忘了告诉你,当页面加载时,在“注册”页面的源代码中,似乎缺少“静态/”。即使在其他页面示例 '/membership/dashboard/' 中它也能正常工作。

【问题讨论】:

  • 在您的settings.pySTATIC_URL 的值是多少?
  • 我得到了这个:STATIC_URL = '/static/' 和 STATICFILES_DIRS = (os.path.join(BASE_DIR, "static"),)

标签: python django django-urls extends base


【解决方案1】:

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

Django 有一种方法可以在模板中引用静态提供的资源,例如 html、javascript 等,这将根据您在 urls.py 中配置的内容使用正确的相对 URL。

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

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

更新

您似乎依赖于访问模板内 settings.py 的值来构建您的 URL,默认情况下,模板无权访问这些 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 认可的方式......

【讨论】:

  • 对;我会检查 settings.py 中的 STATIC_URL 是否是相对的(是“static/”还是“../static/”或类似的东西?)
  • 我明白你的意思。我也有同样的想法,但在我的 base.html 文件中,所有样式表和 js 文件都像这样“href="{{STATIC_URL}}css/bootstrap.min.css"' 链接。 @JoelBurton 我得到了这个: STATIC_URL = '/static/' 和 STATICFILES_DIRS = ( os.path.join(BASE_DIR, "static"),)
  • 张贴您在访问两个 URL 时获得的 渲染 头部部分可能会对您有所帮助。
  • 这里是registration.html link,这里是dashboard.html link(非常感谢您的帮助!)
  • 我认为布伦达所说的是正确的。所以正确的用法是:{% static "css/bootstrap.min.css" %} 而不是{{STATIC_URL}}css/style.css。对吗?
【解决方案2】:

(我认为您不会根据您的问题得到答案。问题不太可能与您的 urls.py 相关。更有可能在您使用的模板中。您还可以澄清您所说的“不加载.css,.js”是什么意思。您的意思是渲染的HTML中没有and标签吗?或者它有,但它们指向错误的东西或否则不工作?)

【讨论】:

  • 嗨乔尔。刚刚发布了一个线程的更新来解释这一点。这两个模板都非常简单。您可以在linklink 看到这些
猜你喜欢
  • 1970-01-01
  • 2014-11-03
  • 1970-01-01
  • 2018-08-21
  • 2022-01-25
  • 2016-06-11
  • 2011-10-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多