如何修复Django Summernote在图像集成中使用相对路径作为源地址?

njthzxwz  于 2023-03-13  发布在  Go
关注(0)|答案(3)|浏览(122)

我是Django框架的新手,继承了一个我正在尝试修复的项目,现在我的项目运行在一个docker中,地址是urllocalhost:8000,直到部署到远程服务器上。
我安装了django-summernote扩展来进行文本编辑和图像集成,但是它并没有像预期的那样工作:
Summernote Editor in Django admin works fine, and correctly displays uploaded images
但是在我的内容页面上,我的HTML集成提供了一个不正确的源URL(这会返回一个错误OFC)

src="/media/django-summernote/2022-02-27/90a1f1ec-ed16-4cc2-a9f8-b0bb30ea4ab8.png"

预期的html集成应为:

src="http://localhost:8000/media/django-summernote/2022-02-27/90a1f1ec-ed16-4cc2-a9f8-b0bb30ea4ab8.png"

我检查和图像文件确实存在于文件夹中,预期的网址下面确实显示了图片好以及。
网站的其他部分在与summernote无关的情况下使用图像集成就可以了。
我认为这与settings.py甚至路由器有关(在我的脑海中,tbh仍然有点复杂)。

设置.py

MEDIA_URL = "/media/"

MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')

网址.py

urlpatterns = [
...
path("summernote/", include("django_summernote.urls")),
]

编辑:运行Django 3.1

rm5edbpk

rm5edbpk1#

对于Django〉= 1.7只需将此添加到您的urls.py

urlpatterns = [
...
path("summernote/", include("django_summernote.urls")),
]+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

你不再需要settings.DEBUG,因为Django会确保它只在调试模式下使用。
对于Django〈= 1.6

if settings.DEBUG:
urlpatterns += patterns('',
    (r'^media/(?P<path>.*)$', 'django.views.static.serve', {
    'document_root': settings.MEDIA_ROOT}))
lp0sw83n

lp0sw83n2#

试试这个:

设置.py

MEDIA_ROOT = BASE_DIR / "media"

MEDIA_URL = "/media/"

网址.py

urlpatterns = [
...
path("summernote/", include("django_summernote.urls")),
]

urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
8wigbo56

8wigbo563#

将“attachment_absolute_uri”设置为True以返回绝对URI中的附件路径。将SUMMERNOTE_CONFIG更新到设置文件中。
在www.example.com网站上settings.py,

SUMMERNOTE_CONFIG = {
  'attachment_absolute_uri': True
}

这个标志允许Django Summernote为上传的媒体文件建立一个绝对URL,而不是使用相对URL/路径。
有关详细信息:https://github.com/summernote/django-summernote#options

相关问题