django中静态文件的正确设置是什么



我刚开始使用django,对静态文件感到困惑。根据这个post-correct静态文件设置,我理解STATIC_URL和名称一样。STATICFILES_DIRS是django查找静态文件的地方,STATIC_ROOT是静态文件收集的地方

rest
|__ rest
|__ settings.py
pages
static
|__admin
|__images
|__vendor
|__bootstrap

templates
manage.py

当我有我的文件夹而不是每个应用程序的文件夹时,我决定采用基于项目的方法。有些东西不适用于我的网站登录页,我看到我需要collectstatic,所以我这样做了,但我设置了我已经存在的static文件的路径,该文件起初不允许我使用,但不知何故最终还是起了作用。我的static文件夹上突然有了管理员,我想这是来自django附带的管理应用程序,我的项目终于开始正常工作了,这是令人困惑的部分。我决定跟随帖子,并在我的设置中包含以下

STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static'),
]
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles/')

现在我有一个staticfiles文件夹和我的static文件夹。同样在staticfiles文件夹中,我有static文件夹中的所有内容,但这似乎不正确,我想知道如何解决此问题。我很困惑,有点担心我会再次打破一切,所以提供的任何知识都会有所帮助。

我用过这样的方法,它的工作原理很好:

STATIC_URL = '/static/'
STATICFILES_DIRS =[os.path.join(BASE_DIR, 'static')]
STATIC_ROOT = os.path.join(BASE_DIR, 'assets')
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

并用于在主项目urls.py中实现代码,而不是在应用程序urls.py中实现代码

urlpatterns += static(settings.STATIC_URL, documents_root=settings.STATIC_ROOT)
urlpatterns += static(settings.MEDIA_URL, documents_root=settings.MEDIA_ROOT)