pdf
ファイルをdjango Admin側からアップロードしようとしています。そのため、ユーザーはウェブサイトに登録してからフロントエンドからダウンロードできます。このタスクのサードパーティ製パッケージ。一般ユーザーがフロントエンドからダウンロードできるようにDjango Adminからpdfファイルをアップロードする
注: プロジェクト構造:
── myproject/ ├── __init__.py ├── settings/ ├── urls.py │__ wsgi.py ── myapp/ └──| __init__.py |__ admin.py |__ apps.py |__ forms.py |__ models.py |__ tests.py |__ urls.py |__ views.py ── media_cdn/ ├── static |__ media ── static/ ├── css └── js |__ media ── templates |__ index.html
でmyproject/settings.py
私は
編集をジャンゴに新しいです
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "static")
]
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media_cdn')
のMyApp/models.py
class My_model(models.Model):
title = models.CharField(max_length=25)
pdf = models.FileField(upload_to='static/media')
def __str__(self):
return self.title
のMyApp/urls.py
urlpatterns = [
url(r'^$', TemplateView.as_view(template_name='index.html'), name='home'),
url(r'^download/(?P<path>.*)$', serve, {'document root': settings.MEDIA_ROOT}),
]
if settings.DEBUG:
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
のMyApp/admin.py
from accounts import models
admin.site.register(models.My_model)
myappに/ views.py
def download(request, path):
file_path = os.path.join(settings.MEDIA_ROOT, path)
if os.path.exists(file_path):
with open(file_path, 'rb') as fh:
response = HttpResponse(fh.read(), content_type="application/pdf")
response['Content-Disposition'] = 'inline; filename=' + os.path.basename(file_path)
return response
raise Http404
index.htmlを
<a href="{{ my_Model_instance.pdf.url }}" download>Click here to download PDF</a>
私はそれが同じようにページ全体をダウンロードするフロントエンド上のリンクをクリックしてくださいHTML
ファイルあなたが作成する必要があり、それはダウンロード(しかし、ここで問題がmy_Model
アップロードがmedia_cdn/static/media/
にdjango admin
からファイルです)(例としてtest123.pdf
をダウンロードするための)Iハードコードurl
<a href="/static/media/test123.pdf" download>Click here to download PDF</a>
しかし、
はあなたの方法が、その示す 'OperationalError' 'NOなどtable'エラーをしようとしました。 –
あなたは 'python manage.py makemigrations'と' python manage 'とタイプする必要があります。py migrate' – MaximeK
テンプレート内のリンクClick here to download PDFをクリックしても何も起こりません。 –