首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当DEBUG设置为False时,Django框架出现服务器错误500

当DEBUG设置为False时,Django框架出现服务器错误500
EN

Stack Overflow用户
提问于 2021-02-07 01:51:38
回答 2查看 174关注 0票数 0

我正在为项目使用Django框架。我正在呈现HTML模板

代码语言:javascript
复制
def index(request):
    print(" --- check fine?")            # for print debug
    trees = Tree.objects.all()
    print(trees)
    return render(request, "index.html", {'trees': trees})
代码语言:javascript
复制
 --- check fine?
<QuerySet [<Tree: Tree object (8)>, <Tree: Tree object (10)>, <Tree: Tree object (11)>, <Tree: Tree object (12)>]>
[06/Feb/2021 17:28:44] "GET / HTTP/1.1" 500 145

这些是我的网址。

代码语言:javascript
复制
urlpatterns = [
     path("", views.index, name="index"),
     path('about/', views.about , name='about'),
     path('contact/', views.contact , name='contact'),
     path('upload/', views.upload_file , name='upload'),
    ]

DEBUG = False我得到了上面的错误。

当我设置我的DEBUG = True时,一切正常意味着显示index.html,甚至还显示数据。

设置DEBUG = False使查找错误变得困难。

index.html包含以下获取数据的代码。

代码语言:javascript
复制
{% for tree in trees %}
    <article class="col-lg-3 col-md-4 col-sm-6 col-12 tm-gallery-item">
        <figure>
            <img src="{{tree.image.url}}" alt="Image" class="img-fluid tm-gallery-img" />
                <figcaption>
                    <h4 class="tm-gallery-title">{{tree.name}}</h4>
                    <p class="tm-gallery-description">{{tree.desc}}</p>
                    <!-- <p class="tm-gallery-price"></p> -->
                </figcaption>
        </figure>
    </article>
{% endfor %}

允许的主机是。

代码语言:javascript
复制
ALLOWED_HOSTS = ['*','127.0.0.1','localhost']
EN

回答 2

Stack Overflow用户

发布于 2021-02-07 02:15:08

看看这个:

当Django在视图中遇到运行时错误,例如语法错误或视图未能返回Django期望的对象时,

  1. Django会返回一个HTTP状态码500,即内部服务器错误。与视图逻辑中的错误密切相关的是,当在视图中遇到错误时,Django本身将引发TemplateDoesNotExist异常,调试设置被设置为False,并且找不到500.html模板。

从Django1.5开始,

  1. 引入了一个新的“允许的主机”设置。当DEBUG设置为False时,将强制执行。在您的settings.py文件中,查找如下所示的:

ALLOWED_HOSTS = []并将其更改为包括Droplet的IP地址和/或指向您的站点的域名。例如:

ALLOWED_HOSTS = "example.com","111.111.111.111“

来源:

  1. https://docs.webfaction.com/software/django/troubleshooting.html#:~:text=Django%20returns%20an%20HTTP%20status,an%20object%20that%20Django%20expects.
  2. https://www.digitalocean.com/community/questions/server-error-500-django-digital-ocean
票数 0
EN

Stack Overflow用户

发布于 2021-02-07 09:20:35

这是settings.py中的变量

代码语言:javascript
复制
STATIC_URL = "/static/"
STATIC_ROOT = os.path.join(BASE_DIR, "staticfiles")

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static'),
    
]
MEDIA_ROOT  = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
# STATICFILES_STORAGE = "whitenoise.storage.CompressedStaticFilesStorage"

由于STATICFILES_STORAGEcollectstatic使用的是白噪声引擎。我评论STATICFILES_STORAGE。我建议删除上述/staticfiles文件夹中的所有STATIC_ROOT目录。

并使用python manage.py collectstatic收集文件。

并在url中使用它。

代码语言:javascript
复制
from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    path('', include('ourhouse.urls')),
    path('admin/', admin.site.urls),
    # path('accounts/',include('accounts.urls'))
]+static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

使用静态和媒体文件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66080047

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档