Django Pagination 损坏了所有 .css 和 .js 元素的所有路径

Posted

技术标签:

【中文标题】Django Pagination 损坏了所有 .css 和 .js 元素的所有路径【英文标题】:Django Pagination corrupted all the paths to all the .css and .js elements 【发布时间】:2013-06-27 02:04:55 【问题描述】:

我希望使用django-pagination,并在安装 django=pagination 后对 settings.py 应用了所有更改,但是当我运行服务器并访问页面时,分页肯定已经到达,但它破坏了所有路径到 css 和 js 元素。因此,该页面没有任何设计。我真的无法理解发生了什么。这是python manage.py runserver 的输出:

[29/Jun/2013 10:26:53] "GET / HTTP/1.1" 200 11594
[29/Jun/2013 10:26:53] "GET /style/bootstrap.min.css HTTP/1.1" 404 3213
[29/Jun/2013 10:26:53] "GET /style/style.css HTTP/1.1" 404 3189
[29/Jun/2013 10:26:53] "GET /style/tabs.css HTTP/1.1" 404 3186
[29/Jun/2013 10:26:53] "GET /images/logo.png HTTP/1.1" 404 3189
[29/Jun/2013 10:26:53] "GET /js/jq.js HTTP/1.1" 404 3168
[29/Jun/2013 10:26:53] "GET /images/green_btn_main.png HTTP/1.1" 404 3219
[29/Jun/2013 10:26:53] "GET /js/jquery.js HTTP/1.1" 404 3180
[29/Jun/2013 10:26:53] "GET /js/bootstrap-tooltip.js HTTP/1.1" 404 3213
[29/Jun/2013 10:26:53] "GET /js/bootstrap-popover.js HTTP/1.1" 404 3213
[29/Jun/2013 10:26:53] "GET /js/bootstrap-tab.js HTTP/1.1" 404 3201
[29/Jun/2013 10:26:53] "GET /images/green_btn-2.png HTTP/1.1" 404 3210
[29/Jun/2013 10:26:53] "GET /images/logo.png HTTP/1.1" 404 3189
[29/Jun/2013 10:26:53] "GET /js/jquery.js HTTP/1.1" 404 3180
[29/Jun/2013 10:26:53] "GET /images/green_btn-2.png HTTP/1.1" 404 3210
[29/Jun/2013 10:26:53] "GET /images/green_btn_main.png HTTP/1.1" 404 3219
[29/Jun/2013 10:26:53] "GET /js/bootstrap-tooltip.js HTTP/1.1" 404 3213
[29/Jun/2013 10:26:53] "GET /js/bootstrap-popover.js HTTP/1.1" 404 3213
[29/Jun/2013 10:26:53] "GET /js/bootstrap-tab.js HTTP/1.1" 404 3201

这是settings.pygit diff 被修改的部分:

@@ -95,6 +95,8 @@ MIDDLEWARE_CLASSES = (
     'django.middleware.csrf.CsrfViewMiddleware',
     'django.contrib.auth.middleware.AuthenticationMiddleware',
     'django.contrib.messages.middleware.MessageMiddleware',
+    'pagination.middleware.PaginationMiddleware',
+    
     # Uncomment the next line for simple clickjacking protection:
     # 'django.middleware.clickjacking.XFrameOptionsMiddleware',
 )
@@ -127,6 +129,7 @@ INSTALLED_APPS = (
     'rest_framework',
     'south',
     'ui',
+    'pagination',
  )
+
+TEMPLATE_CONTEXT_PROCESSORS = (
+    'django.contrib.auth.context_processors.auth',
+    'django.core.context_processors.debug',
+    'django.core.context_processors.i18n',
+    'django.core.context_processors.media',
+    'django.core.context_processors.request',
+)

是的,在django-pagination 文档中据说使用django.core.context_processors.auth 而不是django.contrib.auth.context_processors.auth 但是当我遇到正确回答here 的错误时,我使用了前者。它是关于Django 1.4。是的,我在1.4 有人请帮助我。所有的 UI 设计都消失了,只有文字。

更新:我做了一个git stash 来撤消我的更改,并且所有元素都可以正常加载。它必须是settings.py 文件中的行之一。有人能分辨出是哪一个吗?

【问题讨论】:

【参考方案1】:

你输了"django.core.context_processors.static",所以你得到了很多404。

DefaultTEMPLATE_CONTEXT_PROCESSORS 是:

("django.contrib.auth.context_processors.auth",
"django.core.context_processors.debug",
"django.core.context_processors.i18n",
"django.core.context_processors.media",
"django.core.context_processors.static",
"django.core.context_processors.tz",
"django.contrib.messages.context_processors.messages")

this link 的解决方案可能是更好的做法。

【讨论】:

我再次阅读了它的文档,它说如果尚未定义,则只添加TEMPLATE_CONTEXT_PROCESSORS。所以我从 settings.py 中删除了它,它起作用了!但我会接受你的回答,因为这看起来也是一个可能的解决方案。 +1! 是的,您可以不定义它或根据默认值更改它。

以上是关于Django Pagination 损坏了所有 .css 和 .js 元素的所有路径的主要内容,如果未能解决你的问题,请参考以下文章

15.Django Pagination 简单分页

django 分页django-pure-pagination

Django Rest Framework 3.1 打破了 pagination.PaginationSerializer

Django 利用 Pagination 简单分页

Django 分页2 (Pagination)

Django:rest framework之分页(Pagination)