gpt4 book ai didi

python - Django 管理员在 POST 上返回 404,在 GET 上返回 200

转载 作者:行者123 更新时间:2023-12-03 14:29:03 25 4
gpt4 key购买 nike

在生产服务器上,当我尝试编辑/创建对象时,保存失败,返回 404。这只发生在 POST 请求中,GET 请求(加载页面)工作正常。
Django 是通过 cPanel 和 WSGI 部署的,DEBUG 是 False(尽管它即使设置为 True 也不起作用)

我已经使用 cpanel 部署了 Django 应用程序,并在 virtualenv 中运行。这似乎只发生在使用 FileField 的模型中。对于文件上传,可以更改/创建其他模型就好了。

型号:

def get_image_path(instance, filename):
name, ext = filename.split('.')
return f'images/{instance.advert_id}/{name}.{ext}'

class AdvertImage(models.Model):
advert = models.ForeignKey(Advert, on_delete=models.CASCADE)
image = models.ImageField(upload_to=get_image_path)

网址配置:

urlpatterns = [
path('i18n/', include('django.conf.urls.i18n')),
] + i18n_patterns(
path('admin/', admin_site.urls),

# ... other views....

prefix_default_language=False
)

if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

导航至 domain.com/admin/colli/advertimage/1/change/ - 页面加载正确。填写表格,点击保存。

模型应该被保存并且不应该发生 404。
其他型号,不使用 FileField , 对他们来说,所有管理 View 都能正常工作

当 DEBUG=True 时,完整的错误信息是:
Page not found (404)
Request Method: POST
Request URL: http://example.com/admin/colli/advertimage/1/change/
Raised by: django.contrib.admin.options.change_view
Using the URLconf defined in Colli.urls, Django tried these URL patterns, in this order:

i18n/
admin/
[name='home']
advert/<slug:slug> [name='detail']
tagauks [name='admin_list']
tagauks/lisa [name='insert']
tagauks/muuda/<int:pk> [name='edit']
tagauks/kasutaja/<int:pk> [name='user_edit']
tagauks/save_image [name='save_image']
accounts/login/ [name='login']
accounts/logout/ [name='logout']
api/
^media/(?P<path>.*)$
The current path, colli/advertimage/1/change/, didn't match any of these.

You're seeing this error because you have DEBUG = True in your Django settings file. Change that to False, and Django will display a standard 404 page.

导致这种情况的观点似乎是 change_view

最佳答案

您是否激活了中间件 ( Internationalization: in URL patterns )?

# settings.py
MIDDLEWARE = [
...
'django.middleware.locale.LocaleMiddleware'
...
]

关于python - Django 管理员在 POST 上返回 404,在 GET 上返回 200,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57344774/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com