我想在django的debug=false中一直運行。 然而,只有當我將debug設置為true時,它才起作用。否則不會。 In setting.py
DEBUG = False
另外,在setting.py中
STATIC_URL = '/static/'
STATIC_ROOT = '/static/'
MEDIA_URL = '/media/'
if DEBUG:
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]
else:
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
在主urls.py中
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
path('admin/', admin.site.urls),
path('',include('mysite.urls')),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
我在manage py所在的目錄中有媒體、靜態、靜態文件的目錄。
如果我把代碼完全放在apache中,我的代碼會工作。在開發中,我也想固定調試總是錯誤的。
Apache和靜態/媒體文件
你是通過Apache和mod_wsgi運行所有的東西嗎?如果是這樣,請確保設置您的Apache conf文件來適當地處理“static”別名,這樣做時,您應該會發現,一旦您運行python manage.py collectstatic,您的設置就會起作用。(例如,假設您將項目放在/var/www/myproject/中,如下所示):
Alias /static /var/www/myproject/static
<Directory /var/www/myproject/static>
Require all granted
</Directory>
如果您的圖像在您的媒體目錄中,您可能需要對“媒體”執行同樣的操作。
開發服務器和靜態/媒體文件
如果您仍在運行開發服務器(即python manage.py runserver ),并且使用DEBUG = False,那么您將會遇到提供靜態文件和媒體文件的問題。
然而,您可以通過運行python manage . py runserver-insecurity來回避這些問題,但要注意這并不理想,而且顯然與穩定的生產設置相反——Django并不打算在生產中提供這些文件。
最終提示:
如果您因為希望開發服務器和生產服務器具有不同的調試值(即,在開發中為真,在生產中為假)而遇到這種麻煩,一個簡單的解決方法是使用django-environ包和一個. env文件,您將該文件從版本控制中排除,然后在您的。環境文件。然后,您將擁有一個一致的settings.py文件,能夠在開發中返回DEBUG=True,在生產中返回DEBUG=False。
這個包的鏈接在這里:https://django-environ.readthedocs.io/en/latest/