用django写的程序,然后大概的问题是这样的.跟这个类似:
然后按照答案 改成 ./ 的话,首页是可以访问的,但是内页,文章页就不行了.网站的结构 :
./
默认生成的都是 / 的,我知道把所有的链接前面加一个 目录的名称 比如 /001/ 也是可以访问的,但是感觉这样不够智能 而且也不够方便,求快捷的方法?
/
/001/
认证0级讲师
以下节录自之前我写的书: It's Django
动态网站中也会需要静态档案,如网站会用到的图片,css,js档等。我们要如何来管理和使用这些静态档呢?首先,我们在上层mysite底下增加两个资料夹static 和assets,static 资料夹是开发时用来放置静态档的目录,该目录底下可以新增数个子目录来放置不同种类的静态档,比如说设置img 来放置图片或是css 来放置css 档。而 assets 是网站真正上线时放置静态档的目录,这两个目录之所以会分开,是因为在上线时我们需要将静态档的管理权交给网页伺服器。 mysite底下增加兩個資料夾 static 和 assets,static 資料夾是開發時用來放置靜態檔的目錄,該目錄底下可以新增數個子目錄來放置不同種類的靜態檔,比如說設置 img 來放置圖片或是 css 來放置 css 檔。而 assets 是網站真正上線時放置靜態檔的目錄,這兩個目錄之所以會分開,是因為在上線時我們需要將靜態檔的管理權交給網頁伺服器。
mysite
static
assets
img
css
接著,我們先到settings.py中進行設定:
settings.py
... STATIC_URL = '/static/' STATICFILES_DIRS = ( os.path.join(BASE_DIR, 'static'), ) STATIC_ROOTS = os.path.join(BASE_DIR, 'assets') ...
這邊一共設定了三個參數,詳細的說明如下:
/static/
urls.py
BASE_DIR
python manage.py collectstatic
STAIC_DIRS
STATIC_ROOT
DEBUG
False
... <img src='/static/img/logo.png'> ...
上面这些参数设定好之后,便可以在模版使用 STATICFILES_DIRS 资料夹下的静态档案。假设网站要新增一张图片logo.png (放在mysite/static/img/logo.png ) 在页面上,我们在模版上会这样写: STATICFILES_DIRS 資料夾下的靜態檔案。假設網站要新增一張圖片 logo.png (放在 mysite/static/img/logo.png ) 在頁面上,我們在模版上會這樣寫:
STATICFILES_DIRS
logo.png
mysite/static/img/logo.png
{% load staticfiles %} ... <img src="{% static 'img/logo.png' %}"> ...
便大功告成了。但若有一天靜態檔的網頁路徑被迫更改為 /static_file/ ,就得一個一個模版找到路徑並修改,這不是很累人嗎?一個比較 "Django" 的作法如下:
/static_file/
請讀者記得在模版中先載入 staticfiles ,再使用標籤 {% static ...%} 。經過以上調整之後,Django在處理靜態檔的時候便會將 {% static 'img/logo.png' %} 轉為 '/static/img/logo.png' ,而且當有需要修改靜態檔的路徑時,可以放心大膽地修改 settings.py 檔中的 STATIC_URL rrreee
staticfiles
{% static ...%}
{% static 'img/logo.png' %}
'/static/img/logo.png'
STATIC_URL
请读者记得在模版中先载入 staticfiles ,再使用标签 {% static ...%} 。经过以上调整之后,Django在处理静态档的时候便会将{% static 'img/logo.png' %} 转为'/static/img/logo.png' ,而且当有需要修改静态档的路径时,可以放心大胆地修改settings.py 档中的STATIC_URL,而不需要烦恼修改大量模版的问题了。
'/static/img/logo.png' ,而且当有需要修改静态档的路径时,可以放心大胆地修改settings.py 档中的STATIC_URL,而不需要烦恼修改大量模版的问题了。
如果你是指View对应的Url可以看这篇文档https://docs.djangoproject.com/en/1.9/intro/tutorial03/#removing-hardcoded-urls-in-templates
如果你指的是静态文件,例如js,css,可以通过更改Django配置中的 STATIC_URL 来实现https://docs.djangoproject.com/en/1.9/howto/static-files/
.NET有outbound的urlrewrite听起来很绕人简单说就是在html输出前加一个过滤器把所有/开头的链接地址都替换掉
Apache好像可以用.htaccess文件重写访问的地址,一个正则
以下节录自之前我写的书: It's Django
使用静态档
动态网站中也会需要静态档案,如网站会用到的图片,css,js档等。我们要如何来管理和使用这些静态档呢?首先,我们在上层
mysite
底下增加两个资料夹static
和assets
,static
资料夹是开发时用来放置静态档的目录,该目录底下可以新增数个子目录来放置不同种类的静态档,比如说设置img
来放置图片或是css
来放置css 档。而assets
是网站真正上线时放置静态档的目录,这两个目录之所以会分开,是因为在上线时我们需要将静态档的管理权交给网页伺服器。mysite
底下增加兩個資料夾static
和assets
,static
資料夾是開發時用來放置靜態檔的目錄,該目錄底下可以新增數個子目錄來放置不同種類的靜態檔,比如說設置img
來放置圖片或是css
來放置 css 檔。而assets
是網站真正上線時放置靜態檔的目錄,這兩個目錄之所以會分開,是因為在上線時我們需要將靜態檔的管理權交給網頁伺服器。接著,我們先到
settings.py
中進行設定:這邊一共設定了三個參數,詳細的說明如下:
/static/
,那麼在網頁路徑中以/static/
開始的便會被視為靜態檔,如: http://127.0.0.1/static/hello.png 、 http://127.0.0.1/static/hi.js ,但如果是 http://127.0.0.1/restaurants/static/ 則會匹配urls.py
中的路徑,而非靜態檔BASE_DIR
所指示的資料夾底下新增一個static
資料夾,並把圖檔,css,js放在裡面python manage.py collectstatic
,Django 會將STAIC_DIRS
下發現的靜態檔複製至STATIC_ROOT
下。由於當設定檔的DEBUG
設為False
settings.py
中进行设定:/static/
,那么在网页路径中以/static/
开始的便会被视为静态档,如: http://127.0.0.1/static/hello.png 、 http://127.0.0.1/static/hi.js ,但如果是http://127.0.0.1/restaurants/static/ 则会匹配urls.py
中的路径,而非静态档🎜 🎜BASE_DIR
所指示的资料夹底下新增一个static
资料夹,并把图档,css,js放在里面🎜 🎜python manage.py collectstatic
,Django 会将STAIC_DIRS
下发现的静态档复制至STATIC_ROOT
下。由于当设定档的DEBUG
设为False
后,Django 预设便不会处理回传静态档了,藉由指令将这些档案集合到一个资料夹下,方便网页伺服器管理及读取🎜 🎜 🎜 🎜上面这些参数设定好之后,便可以在模版使用
STATICFILES_DIRS
资料夹下的静态档案。假设网站要新增一张图片logo.png
(放在mysite/static/img/logo.png
) 在页面上,我们在模版上会这样写:STATICFILES_DIRS
資料夾下的靜態檔案。假設網站要新增一張圖片logo.png
(放在mysite/static/img/logo.png
) 在頁面上,我們在模版上會這樣寫:便大功告成了。但若有一天靜態檔的網頁路徑被迫更改為
rrreee/static_file/
,就得一個一個模版找到路徑並修改,這不是很累人嗎?一個比較 "Django" 的作法如下:請讀者記得在模版中先載入
便大功告成了。但若有一天静态档的网页路径被迫更改为staticfiles
,再使用標籤{% static ...%}
。經過以上調整之後,Django在處理靜態檔的時候便會將{% static 'img/logo.png' %}
轉為'/static/img/logo.png'
,而且當有需要修改靜態檔的路徑時,可以放心大膽地修改settings.py
檔中的STATIC_URL
rrreee/static_file/
,就得一个一个模版找到路径并修改,这不是很累人吗?一个比较 "Django" 的作法如下:rrreee
请读者记得在模版中先载入
🎜我回答过的问题🎜: Python-QA🎜staticfiles
,再使用标签{% static ...%}
。经过以上调整之后,Django在处理静态档的时候便会将{% static 'img/logo.png' %}
转为'/static/img/logo.png' ,而且当有需要修改静态档的路径时,可以放心大胆地修改
settings.py
档中的STATIC_URL
,而不需要烦恼修改大量模版的问题了。如果你是指View对应的Url可以看这篇文档
https://docs.djangoproject.com/en/1.9/intro/tutorial03/#removing-hardcoded-urls-in-templates
如果你指的是静态文件,例如js,css,可以通过更改Django配置中的 STATIC_URL 来实现
https://docs.djangoproject.com/en/1.9/howto/static-files/
.NET有outbound的urlrewrite
听起来很绕人
简单说就是在html输出前加一个过滤器
把所有/开头的链接地址都替换掉
Apache好像可以用.htaccess文件重写访问的地址,一个正则