例子:已经配置好了Apache可以访问D:\WebRoot\DjangoProject\mysite工程,想要把其他目录的django工程中的app加入到该工程中。
如果直接把app拷贝过去的话,Apache无法向Django一样直接找到static目录
解决办法:
1 把其他工程中所有app的静态问价收集到一个static文件夹中,再把这个文件夹拷贝到mysite工程目录。
在test\settings.py中添加: STATIC_ROOT = BASE_DIR + os.sep + ‘static‘ 作为输出目录,当然也可以是任意路径
然后执行: python manage.py collectstatic 然后 yes
此操作会把该工程中所有app的static目录收集起来,放到工程根目录的static中
==>
2 配置Apache的static目录,并把收集的静态文件目录(admin,blog,personal)放到该目录
Alias /static/ "D:/WebRoot/DjangoProject/mysite/static/" 也可以任意指定,以后再添加应用直接把其static的内容放到这里即可 <Directory "D:/WebRoot/DjangoProject/mysite/static/"> 设置访问权限 Require all granted </Directory>
3 拷贝新的应用到工程目录
app目录(static可以不用了)+db.sqlite3(第一次可以覆盖,以后就不要了,重新migrate就好)
4 修改urls.py和settings.py
按照原工程中的复制即可
另一种方案
拷贝新的app到工程目录
在工程的settings.py中添加STATIC_ROOT输出到Apache的static目录
然后删除app中的static
也可以把templates、meida收集到一个目录中 if DEBUG: MEDIA_URL = ‘/media/‘ STATIC_ROOT = ‘D:/WebRoot/DjangoProject/mvp_static/‘ MEDIA_ROOT = ‘D:/WebRoot/DjangoProject/mvp_static/media/‘ STATICFILES_DIRS = ( ‘D:/WebRoot/DjangoProject/mvp_static/static/‘, ) TEMPLATES_DIRS = ( ‘D:/WebRoot/DjangoProject/mvp_static/templates/‘, )
时间: 2024-10-12 17:40:37