django 应用程序生产时出现服务器错误(500)

问题描述 投票:0回答:1

已更新,请检查更新部分。

我正在尝试在 Render 上部署 Django 应用程序。

在我的项目中,我有一些应用程序拥有自己的

urls.py
文件。然后,我将它们包含在项目的 url 中。看一下该项目的网址:

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('home.urls')),
    path('about/', include('about.urls')),
    path('kbdash/', include('management.urls')),
]

对于每个应用程序,网址如下所示:

urlpatterns = [
  path('', about_page, name='about'),
]

除了

path('kbdash/', include('management.urls'))

之外,所有这些网址都有效

以下是管理应用程序的网址:

urlpatterns = [
  path('', views.Dashboard.as_view(), name='dashboard'),
  path('fuels/', views.fuel_list_view, name='fuel_list'),
  
]

主 url 文件中的所有 url 都可以正常工作,除了

kbdash/

访问

kbdash/
并在
kbdash/
下抛出
Server Error (500)

下的任何链接

/kbdash/
url 关联的视图。 :

class Dashboard(LoginRequiredMixin, generic.View):

  def get(self, request, *args, **kwargs):        
    fuels = Fuel.objects.filter(status=1)

    try:
      total_sale = Sale.objects.filter(fuel__id__in = fuels).aggregate(Sum('total_amount'))['total_amount__sum']
      if total_sale is None:
        total_sale = 0
    except:
      total_sale = 0

    context = {
      'total_fuel_count': fuels.count(),
      'fuels': fuels,
      'total_sale': total_sale,
    }

    return render(request, 'management/dashboard.html', context)

我尝试在生产中将 DEBUG 更改为 True 以在浏览器中看到错误。这样做,url 就可以工作了。但即使 DEBUG 为 False,它也应该可以工作。

我不知道为什么会有这种行为。在本地计算机上它运行完美。

有人可以引导我走向光明吗...!

更新部分: 我使用了

ADMINS
中的
settings.py
设置。现在我的 Gmail 收件箱中出现了错误。 错误:

Internal Server Error: /kbdash/
ValueError at /kbdash/ Missing staticfiles manifest entry for 'select2/dist/css/select2.min.css' Request Method: GET Request URL: https://kb-cng-web.onrender.com/kbdash/

我使用 select2 来选择元素。它在本地完美运行。但在生产中它在静态文件中不可用。

我也尝试了源代码,但检查 url

/static/path/to/select2
显示它在生产中不可用。 有什么方法可以追踪它?

Base.html

https://jsfiddle.net/8ozt2761/

仪表板.html

https://jsfiddle.net/8ozt2761/1/

django django-urls server-error render.com
1个回答
0
投票

我刚刚解决了。

我将 select2 源代码存储在 select2 文件夹中,如下所示:

select2/dist/css/select2.min.css

select2/dist/js/select2.min.js

因此,当在生产中运行collectstatic时,它没有在路径中找到源。

然后经过这么多次调试我改变了路径,直接将min.css和min.js放在select2文件夹下。

现在运行collectstatic后它找到了select2的路径。

© www.soinside.com 2019 - 2024. All rights reserved.