如何解决不能有一个带有“媒体”一词的蛞蝓姜戈
设置
我有一个非常简单的应用程序,它的主页显示一个项目列表,如果你点击一个项目,你会看到项目的详细信息。这是此类项目的模型的一部分:
# projects/models.py
class Project(models.Model):
...
title = models.CharField(max_length=100,unique=True)
slug = AutoSlugField(populate_from="website_title",always_update=True)
...
如您所见,项目的 slug 是根据名称确定的(删除空格、特殊字符等)
# projects/urls.py
urlpatterns = [
path("",ProjectListView.as_view(),name="home"),path("<slug:slug>",ProjectDetailView.as_view(),name="project"),]
问题
问题在于,如果项目名称中(在开头)中包含 media 一词,则生成的路径将返回错误。例如,如果一个项目名为 MediaCMS
,那么服务器将尝试以下 url https://builtwithdjango.com/mediacms
,但它会返回一个错误(如下)。
我发现的解决方法是在项目名称中添加下划线(即 _MediaCMS
)。
这个问题显然是由于项目 slug 和 MEDIA_URL
之间的某种混合和匹配,对我来说如下:
# builtwithdjango/settings.py
MEDIA_URL = "/media/"
MEDIA_ROOT = os.path.join(BASE_DIR,"media/")
注意
有趣的是,当在本地服务器上时,这不是问题。以下网址 http://127.0.0.1:8000/mediacms
工作正常。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。