为什么Django模板引擎会将myapp / myview添加到我的URL中?

时间:2019-02-24 20:25:26

标签: python django django-templates

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

它链接到:

在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应用程序(也是有史以来的第一个webapp),我想我错过了一些非常基本的东西。你有个主意吗?

1 个答案:

答案 0 :(得分:1)

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

MEDIA_URL = '/media/'