【问题标题】:Why is Django template engine adding myapp/myview to my URLs?为什么 Django 模板引擎将 myapp/myview 添加到我的 URL 中?
【发布时间】:2019-07-18 06:23:02
【问题描述】:

我制作了一个模板来列出带有下载链接的文档,但没有链接到:

它链接到:

在 myapp/templates/myapp/list.html

    <ul>
    {% for document in documents %}
        <li><a href="{{ document.docfile.url }}">{{ document.docfile.name }}</a></li>
    {% endfor %}
    </ul>

document.docfile.url 实际上确实链接到 media/mydoc.csv 所以我猜它与模板引擎有关。

版本

  • Python:3.7.2
  • Django:2.1.7
  • 操作系统:Windows 10

在 myapp/models.py 中

class Document(models.Model):
    docfile = models.FileField(upload_to='documents')

在 myapp/views.py 中

def myview(request):

    documents = Document.objects.all()
    return render(request, 'myapp/list.html', {'documents': documents})

在 myapp/urls.py 中

app_name = 'myapp'
urlpatterns = [
    path('', views.index, name='index'),
    path('myview/', views.myview, name='myview'),
]

在 myproject/urls.py 中

urlpatterns = [
    path('', views.index, name='index'),
    path('myapp/', include('myapp.urls')),
    path('admin/', admin.site.urls),
]

在 settings.py 中

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

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

因为它是我的第一个 Django 应用程序(也是第一个 web 应用程序),我想我错过了一些非常基本的东西。你有什么想法吗?

【问题讨论】:

  • 不,这是设置MEDIA_URLMEDIA_ROOT的结果。

标签: python django django-templates


【解决方案1】:

您的 MEDIA_URL 错误。你错过了起始斜线。

MEDIA_URL = '/media/'

【讨论】:

  • 谢谢,它更正了错误。作为此设置的补充,文件现在指向 media/mydoc.cvs,而模型显示 media/documents/mydoc.csv。然而这可能是另一个故事......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-02-25
  • 2020-12-16
  • 2021-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-14
相关资源
最近更新 更多