django页面没反应/一直处于加载中/请求成功却不跳转:两种常见情况

使用Django的时候,页面请求正常,也没有报任何错误,甚至连警告都没有的情况下,页面却还是原地不动或者闪一下或者无限显示加载动画的情况适用本文。

这个问题描述比较笼统,但根据我目前遇到过两种情况来看,似乎都比较重要而且实用,所以打算分别讲述一下。

第一种:URL配置错误

页面闪一下,却原地不动,可能是这种情况。

例如有以下两个URL:

     url(r'^foo/bar/', User.obama),
     url(r'^foo/bar/trump/', User.trump),
你会发现所有从foo/bar/到foo/bar/trump/的请求都毫无作用,但各种调试器查看器服务器控制台等都告诉你“200”,一切正常。

新学Django的朋友很可能犯这个错误。

归根结底其实也很可笑,就是正则表达式使用不正确:r'^   '是一个只限定了开头的正则表达式,没有限制结尾,所以一切以foo/bar/开头的URL都会在Django算法的作用下直接打开foo/bar/,而如果地址栏已经是foo/bar/的话,自然是“原地不动”了。毫无疑问,Django的算法是一旦找到一个匹配结果就立马显示,这的确是高效的,不需要去遍历所有的URL,但这也产生了以上问题。

解决方案:

     url(r'^foo/bar/$', User.obama),
     url(r'^foo/bar'/trump/', User.trump),

加上结束符号“$”,则Django就必须完全匹配方能跳转,则网页运行正常。




第二种:新页面的渲染过程中出现了“不可描述的错误”

我们知道,一旦Django或者Python代码出错,则会立刻反映到页面上,导致程序终止。但是写过前端的朋友一定清楚,无论是JS还是html还是css,都是非常“包容”的语言。简单来说:一点小错,无伤大雅;满篇错误,照样执行。如果不在调试环境下运行,那么任何错误百出的html页面都能“硬着头皮”运行下去。这一点也毫无疑问是有好有坏,好处自不必说,这让前端页面有了极高的容错率和兼容性,这简直是安身立命之本。但是坏处就是,一旦需要加载的页面出现了某些“致命”错误,也不会有报错信息,而是会导致页面莫名其妙地加载或者干脆“消失”。

解决这个问题的方法自然也很简单:完全模拟你要加载的页面(精确到每一个参数,每一个符号),然后在调试环境下独立打开,看看会不会出现一些致命的错误,如果没有,就人工检查一下。错误自然会出现。然后根据错误去修复即可。

下面我举一个我自己遇到的错误案例:

在新页面中,我需要利用django的模板传值,声明一个新的变量:

var foo={{  bar|safe }}
但是传过来的{{  bar|safe }} 却是一个含有逗号的字符串,且不慎忽略掉了两边的引号,结果毫无疑问,这导致了一个致命的错误,页面长时间处于加载状态,但是毫无动静。

解决方案:正确传值或即可。

如果你的情况类似于这个案例,移步:http://blog.csdn.net/pluschang/article/details/78425523




这个问题可能有多个原因导致,以下是一些可能的解决方法: 1. 首先确保你已经正确地配置了 Django 的静态文件设置。在你的 `settings.py` 文件,需要设置 `STATIC_URL` 和 `STATIC_ROOT`。`STATIC_URL` 表示你在 HTML 模板引用静态资源时使用的路径,一般是 `/static/`。`STATIC_ROOT` 表示 Django 收集所有静态文件的目录,一般是项目根目录下的一个名为 `static` 的文件夹。在开发环境,还需要设置 `STATICFILES_DIRS` 来告诉 Django 去哪里查找静态文件。 2. 如果你已经正确地配置了静态文件设置,但是访问页面时仍然有应用样式,可能是因为你有正确地引用 Bootstrap 的 CSS 文件。在你的模板,需要在 `head` 标签内引用 Bootstrap 的 CSS 文件。例如: ```html {% load static %} <link rel="stylesheet" href="{% static 'bootstrap/css/bootstrap.min.css' %}"> ``` 这里假设你已经将 Bootstrap 的 CSS 文件放在了 `static/bootstrap/css` 目录下。 3. 如果你已经正确地引用了 Bootstrap 的 CSS 文件,但是仍然有应用样式,可能是因为你的浏览器缓存了旧的 CSS 文件。可以尝试清除浏览器缓存,或者在 URL 后面添加一个随机参数,例如: ```html {% load static %} <link rel="stylesheet" href="{% static 'bootstrap/css/bootstrap.min.css' %}?v={{ random }}"> ``` 这里的 `random` 可以是一个随机数或者时间戳,每次刷新页面时都会变化,从而强制浏览器重新加载 CSS 文件。 4. 如果你在开发环境使用了 `runserver` 命令启动 Django,而且在访问页面时出现了 `Not Found: /` 的错误,可能是因为你有正确地配置 Django 的路由。在你的项目的 `urls.py` 文件,需要将所有的 URL 都映射到一个视图函数或者一个应用程序的视图函数。例如: ```python from django.urls import path from myapp.views import index urlpatterns = [ path('', index, name='index'), # 其他 URL 映射 ] ``` 这里假设你有一个名为 `myapp` 的应用程序,其有一个名为 `index` 的视图函数,用于渲染主页。这样,当你访问项目的根路径时,就会调用 `index` 视图函数来渲染页面
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值