Settings.py以及html和静态文件Django的路径
Settings.py and paths for html and static files Django
我使用的是Django 1.8,在运行开发Django服务器时,我在显示JavaScript和CSS时遇到了问题。我认为主要的问题是没有很好地理解将我的静态根目录和静态根目录设置为什么。我注意到,当我创建Django项目和应用程序时,我的文件夹/文件路径的创建方式与其他路径不同。我将把我的STATIC_ROOT和STATICILES_DIR分配给什么?
设置.py:
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(_file_)))
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'Myapp'
)
ROOT_URLCONF = 'MyProject.urls'
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates' )],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, "static/")
MEDIA_ROOT = os.path.join(BASE_DIR, "media/")
STATIC_ROOT = os.path.join(os.path.dirname(BASE_DIR), "static")
urls.py:
from django.conf.urls import include, url
from django.contrib import admin
from Myapp.views import startpage
from django.conf.urls.static import static
from django.conf import settings
urlpatterns = [
# Examples:
# url(r'^$', 'MyProject.views.home', name='home'),
# url(r'^blog/', include('blog.urls')),
url(r'^admin/', include(admin.site.urls)),
url(r'^$', startpage)
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
views.py:
from django.shortcuts import render, render_to_response
# Create your views here.
def startpage(request):
return render_to_response('htmlpage.html');
这是我目前的目录:
C:'Users'Me'DjangoProjects'
|-----MyProject'
|------MyApp'
|----_init_.py
|----admin.py
|----models.py
|----tests.py
|----views.py
|----_pycache_'
|----migrations'
|------MyProject'
|----_init_.py
|----settings.py
|----urls.py
|----wsgi.py
|----_pycache_'
|------staticfiles'
|------templates'
|----htmlpage.html
|------db.sqlite3
|------manage.py
我也不知道我会把JSON文件放在哪里,因为我使用jquery/javascript从JSON文件中获取数据。另外,我的javascript代码嵌入在我的html文件中,可以吗?还是我需要制作一个单独的javascript文件?
任何帮助都将不胜感激。非常感谢。
进行了更新。
这是使用javascript从json文件读取数据的问题的解决方案,即它不依赖于django或php或类似的东西。
function getAllSupportedItems( ) {
return $.getJSON("staticfiles/json_folder/name_of_your_json_file.json").then(function (data) {
return data.items;
});
}
getAllSupportedItems().done(function (items) {
// you have your items here
});
请参阅此以获得更好的解释->使用Jquery从本地文件获取JSON对象
还有一件事,如果你克服了这个问题,你可能会陷入困境。
在您的settings.py中,您提到了您的STATIC_URL='/STATIC/',而您将该文件夹命名为'staticfiles'。因此,要么将"staticfile"重命名为"static",要么反之亦然。虽然前者是惯例,所以将其重命名为"static",否则您的设置。py将在BASE目录中查找名为"static"的文件夹,但它永远找不到,因为您已将其命名为"staticfiles"
好的,按照问题的相反顺序回答您的问题。
首先,将html、javascript和css保存在单独的文件中总是一种更好的惯例和实践。所以所有的HTML文件都放在templates目录中,javascript和CSS放在静态目录中的js和CSS目录中。
现在,我不认为每次加载web应用程序时都需要访问一些json文件。如果是的话,那么它又出了问题,因为出于这个目的,你有你的数据库。因此,将数据移动到您的数据库中。否则,如果它是一次性的,比如数据上传,那么你可以把它保存在静态目录中的一个目录中,比如json。
现在最后,来谈谈你的主要问题STATIC_ROOT vs STATIC_DIRS vs STATIC_URL,那么这里已经有一个很好的解释了相同的东西->STATICILES_DIR,STATIC_ROOT和MEDIA_ROOT 之间的差异
另外,您需要将您的"staticfiles"目录重命名为"static",如在您的设置中所示。如果您提到了static_URL="/static/"而不是/"staticfiles"/,或者您可以更改static_ULL=/"staticfiles"/,但前者是一个遵循的约定,所以请尽量坚持。
- Django'支持Javascript文件中的翻译
- AJAX在Django的外部JS文件中发布
- Django无法通过urls.py配置找到djangular/app.js文件.如何进行故障排除
- 没有在django项目中加载CSS文件
- 使用angular$http和django-urlpatters来获得json文件
- Django,HTML,JS:<img src=“#">可以在HTML中工作,但不能在JS文件中工作
- 用Angular和Django发送文件
- 在使用 Django 静态文件时动态设置映像时,只有绝对路径才能与 jquery 一起使用
- 如何从 Django 浏览本地文件并存储文件信息
- 如何在JavaScript文件中使用Django变量
- 如何在Django表单中设置可接受的文件类型'的FileInput小部件
- Django项目中第三方静态文件的推荐目录布局是什么
- Django-开发服务器不提供管理静态文件
- 在django模板中调用javascript文件
- 如何在 django 中添加 javascript 文件到我的 ModelForm 中
- Django从通过网站上传的文件读取
- Django View 无法使用请求获取文件.来自 ajax 表单的文件提交
- 静态文件被接收,但在 Django 中不起作用
- 上传文件时将数据从JavaScript传递到Django视图
- Settings.py以及html和静态文件Django的路径